すべてのプロダクト
Search
ドキュメントセンター

Quick BI:Custom SQL

最終更新日:Apr 01, 2026

データ分析では、複雑なロジックやモデル用のデータセットを作成するためにアドホッククエリを使用できます。アドホッククエリはパラメータを渡すこともサポートしており、より複雑で動的な分析シナリオを実現します。

前提条件

データソースに接続済みである必要があります。詳細については、「データソースへの接続」をご参照ください。

制限事項

API データソースはアドホッククエリをサポートしていません。

SQL コードの入力

アドホッククエリは、以下のいずれかの方法で作成できます。

  1. アドホッククエリページに移動します。

    • エントリー 1:データソース ページの右上隅にある Ad Hoc Query をクリックします。image

    • エントリ 2: データセットエディターの関係モデルキャンバスで、データソースを選択します。キャンバスにデータテーブルが存在しない場合は、キャンバス上の[SQLコードを使用してデータセットを作成するにはクリックしてください]をクリックするか、左側のパネルにある[SQLコードでテーブルを作成]をクリックします。image

    • エントリー 3:データセットエディターの 物理モデリング キャンバスで、左側パネルの Create table with SQL code をクリックします。

      image

  2. SQL コードを入力したら、Run をクリックします。

    image

    以下のコードは、SQL ステートメントのサンプルです。

    SELECT  report_date,
            or*******el,
            shipping_type,
            area,
            price,
            order_number
    from    company_sales_record
    where   $expr{report_date :report_date}
    and     $expr{order_level :order_level}
    and     $expr{order_number :or********er}

    クエリが正常に実行された後は、Result タブで結果をプレビューできます。image

  3. Create Dataset をクリックして、アドホッククエリから作成したデータセットを保存します。

SQL コードの変更

SQL コードは以下の 3 つの方法で変更できます。

  • 対象テーブルの右側にある image アイコンをクリックします。image

  • キャンバス上で対象テーブルをクリックし、下部の Table Details セクションで Edit SQL をクリックします。image

  • 対象テーブルの右側にある image アイコンをクリックし、Edit SQL を選択します。

    image

SQL 構文

  • アドホッククエリは主に SELECT ステートメントをサポートします。INSERTUPDATEDELETE ステートメントおよびストアドプロシージャはサポートされていません。

  • クエリ構文は、使用しているデータソースのデータベース構文に準拠する必要があります。たとえば、MySQL データソースを使用する場合は、アドホッククエリも MySQL のクエリ構文を使用する必要があります。MongoDB の find()findone() のような特定のデータベース構文は Quick BI でサポートされていないため、アドホッククエリでは SELECT ステートメントを使用してデータをクエリする必要があります。

  • アドホッククエリにコメントを追加するには、-- Comment 形式を使用します。ハイフン (--) の後に半角スペースを 1 つ入れる必要があります。

    image

    以下のコードは、SQL ステートメントのサンプルです。

    SELECT  area,  -- Area
            price  -- Price  
    from    company_sales_record
  • アドホッククエリで複数のテーブルを結合する場合は、テーブルエイリアスおよびカラムエイリアスを正しく使用してください。エイリアスの構文はデータベースによって異なります。

  • アドホッククエリには行数の上限はありませんが、クエリ自体の長さは 65,536 文字を超えることはできません。必要に応じて、クエリを分割または最適化するか、複数のデータセットを作成してから結合してください。

説明
  • Quick BI はデータセットの SQL をデータベースに送信して実行し、その結果を取得します。クエリのタイムアウト期間は 5 分です。5 分以内にデータが返されない場合、タイムアウトエラーが発生します。

  • 5 分未満でクエリがタイムアウトする場合は、SLB などのネットワークデバイスに設定されたタイムアウト設定や、ファイアウォールのネットワークインターセプトポリシーによりクエリリクエストがブロックされている可能性があります。

プレースホルダー

Quick BI では、SQL にパラメータを渡すためにプレースホルダーを使用します。これにより、柔軟なデータ分析が可能になります。プレースホルダーには、値プレースホルダーと式プレースホルダーの 2 種類があります。

タイプ

説明

ユースケース

フォーマット

値プレースホルダー

ダッシュボード上のクエリ制御から単一の値または値のセットを渡します。

説明

プレースホルダーが日付の場合、渡される値のフォーマットを制御するために特定の日付フォーマットを選択する必要があります。

パラメータを渡す必要があるほとんどのシナリオに適しています。

'$val{placeholder_name}'

式プレースホルダー

ダッシュボード上のクエリ制御から条件を渡します。

式プレースホルダーを使用すると、ユーザーがダッシュボード上でフィルター方法を変更できるようになり、フィルター条件全体が SQL ステートメントに渡されます。

たとえば、次の図に示すダッシュボードでは、ユーザーが条件を Profit > 50 または Profit < 50 に設定できます。演算子を含む条件全体を SQL ステートメントに渡す必要があります。参数传参

$expr{physical_field_name:placeholder_name}

設定

ビジネス要件に基づいて SQL ステートメントを作成し、プレースホルダーを追加します。

  1. SQL エディターページで、Parameter Settings をクリックします。

    image

  2. Parameter Settings パネルでプレースホルダーを設定し、OK をクリックします。

    image

    設定項目の詳細については、「データセットの作成」をご参照ください。

    説明

    プレースホルダーが SELECT 句で使用されている場合、グローバルデフォルト値を設定する必要があります。

    たとえば、データセット作成時に次のように SELECT 句に profit_range という名前のプレースホルダーを追加します。

    SELECT report_date, order_level, shipping_type,price,order_number,area,
     case when profit_amt< ${profit_range} then 'Loss' 
     when profit_amt> ${profit_range} then 'Profit'
     else 'Break-even'
     end as 'Or*er Level'
    from company_sales_record
    where $expr{report_date :report_date}
    and $expr{order_level :order_level}
    and $expr{or**********************er}

    デフォルト値を設定しないと、クエリは実行に失敗します。

    image

    profit_range のデフォルトクエリ値をパラメータ設定で設定する必要があります。

    image

    デフォルト値を設定すると、クエリは正常に実行されます。次の図はその結果を示しています。

    image

  3. Save をクリックしてデータセットを保存します。image

  4. 上部のメニューバーで image アイコンをクリックするか、image アイコンをクリックして Create Dashboard を選択します。

    image

  5. ダッシュボードエディターページでクエリ条件を追加し、プレースホルダーにバインドします。

    たとえば、クエリ条件を設定する際に、単一選択のドロップダウンリストを使用して area をフィルターし、値プレースホルダーにバインドして単一の値を渡します。image.png

    or********er に対してテキストフィルターを使用し、式プレースホルダーにバインドして条件を渡します。image.png

  6. ダッシュボードでデータをクエリすると、クエリ制御からの値が SQL 内の対応するプレースホルダーに渡されます。

    たとえば、次の図はダッシュボード上のクエリ条件を示しています。image.png

    対応する SQL ステートメントは次のとおりです。

    SELECT * FROM company_sales_record
    WHERE area = 'North China' 
    AND order_number > 100

    プレースホルダーの使用例:

    SELECT * FROM tablename
    WHERE area in ('$val{area_ph}') -- テキスト型、複数選択
    AND name = '$val{name_ph}' -- テキスト型、単一選択
    AND number = $val{number_ph}  -- 数値型
    AND report_date > '$val{report_date_ph.get(0)}' -- 日付型、日付範囲ピッカーの開始日を取得
    AND report_date < '$val{report_date_ph.get(1)}' -- 日付型、日付範囲ピッカーの終了日を取得

プレースホルダーのユースケースの詳細については、「プレースホルダー」をご参照ください。

説明

下位互換性:

値プレースホルダーの旧形式(従来のプレースホルダー):${placeholder_name}

式プレースホルダーの旧形式(従来のパラメーター):${physical_field_name:parameter_name}