データ分析では、複雑なロジックやモデル用のデータセットを作成するためにアドホッククエリを使用できます。アドホッククエリはパラメータを渡すこともサポートしており、より複雑で動的な分析シナリオを実現します。
前提条件
データソースに接続済みである必要があります。詳細については、「データソースへの接続」をご参照ください。
制限事項
API データソースはアドホッククエリをサポートしていません。
SQL コードの入力
アドホッククエリは、以下のいずれかの方法で作成できます。
アドホッククエリページに移動します。
エントリー 1:データソース ページの右上隅にある Ad Hoc Query をクリックします。

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

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

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

以下のコードは、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 タブで結果をプレビューできます。

Create Dataset をクリックして、アドホッククエリから作成したデータセットを保存します。
SQL コードの変更
SQL コードは以下の 3 つの方法で変更できます。
対象テーブルの右側にある
アイコンをクリックします。
キャンバス上で対象テーブルをクリックし、下部の Table Details セクションで Edit SQL をクリックします。

対象テーブルの右側にある
アイコンをクリックし、Edit SQL を選択します。
SQL 構文
アドホッククエリは主に
SELECTステートメントをサポートします。INSERT、UPDATE、DELETEステートメントおよびストアドプロシージャはサポートされていません。クエリ構文は、使用しているデータソースのデータベース構文に準拠する必要があります。たとえば、MySQL データソースを使用する場合は、アドホッククエリも MySQL のクエリ構文を使用する必要があります。MongoDB の
find()やfindone()のような特定のデータベース構文は Quick BI でサポートされていないため、アドホッククエリではSELECTステートメントを使用してデータをクエリする必要があります。アドホッククエリにコメントを追加するには、
-- Comment形式を使用します。ハイフン (--) の後に半角スペースを 1 つ入れる必要があります。
以下のコードは、SQL ステートメントのサンプルです。
SELECT area, -- Area price -- Price from company_sales_recordアドホッククエリで複数のテーブルを結合する場合は、テーブルエイリアスおよびカラムエイリアスを正しく使用してください。エイリアスの構文はデータベースによって異なります。
アドホッククエリには行数の上限はありませんが、クエリ自体の長さは 65,536 文字を超えることはできません。必要に応じて、クエリを分割または最適化するか、複数のデータセットを作成してから結合してください。
Quick BI はデータセットの SQL をデータベースに送信して実行し、その結果を取得します。クエリのタイムアウト期間は 5 分です。5 分以内にデータが返されない場合、タイムアウトエラーが発生します。
5 分未満でクエリがタイムアウトする場合は、SLB などのネットワークデバイスに設定されたタイムアウト設定や、ファイアウォールのネットワークインターセプトポリシーによりクエリリクエストがブロックされている可能性があります。
プレースホルダー
Quick BI では、SQL にパラメータを渡すためにプレースホルダーを使用します。これにより、柔軟なデータ分析が可能になります。プレースホルダーには、値プレースホルダーと式プレースホルダーの 2 種類があります。
タイプ | 説明 | ユースケース | フォーマット |
値プレースホルダー | ダッシュボード上のクエリ制御から単一の値または値のセットを渡します。 説明 プレースホルダーが日付の場合、渡される値のフォーマットを制御するために特定の日付フォーマットを選択する必要があります。 | パラメータを渡す必要があるほとんどのシナリオに適しています。 |
|
式プレースホルダー | ダッシュボード上のクエリ制御から条件を渡します。 | 式プレースホルダーを使用すると、ユーザーがダッシュボード上でフィルター方法を変更できるようになり、フィルター条件全体が SQL ステートメントに渡されます。 たとえば、次の図に示すダッシュボードでは、ユーザーが条件を |
|
設定
ビジネス要件に基づいて SQL ステートメントを作成し、プレースホルダーを追加します。
SQL エディターページで、Parameter Settings をクリックします。

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

設定項目の詳細については、「データセットの作成」をご参照ください。
説明プレースホルダーが
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}デフォルト値を設定しないと、クエリは実行に失敗します。

profit_rangeのデフォルトクエリ値をパラメータ設定で設定する必要があります。
デフォルト値を設定すると、クエリは正常に実行されます。次の図はその結果を示しています。

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

上部のメニューバーで
アイコンをクリックするか、
アイコンをクリックして Create Dashboard を選択します。
ダッシュボードエディターページでクエリ条件を追加し、プレースホルダーにバインドします。
たとえば、クエリ条件を設定する際に、単一選択のドロップダウンリストを使用して area をフィルターし、値プレースホルダーにバインドして単一の値を渡します。

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

ダッシュボードでデータをクエリすると、クエリ制御からの値が SQL 内の対応するプレースホルダーに渡されます。
たとえば、次の図はダッシュボード上のクエリ条件を示しています。

対応する 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}
