このページでは、派生テーブルの一部である
sql
パラメータについて説明します。また、
sql
(フィールド向け)パラメータのドキュメント ページに記載されているとおり、フィールドの一部としてsql
を使用することもできます。
用途
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff') ;;
...
}
階層
sql |
デフォルト値
なし許可
SQL ブロック |
定義
sql
を使用すると、派生テーブルの生成に使用する SQL を指定できます。SQL クエリが未加工の SQL で記述され、Looker のフィールドを参照していない限り、sql
パラメータで任意の正式な SQL クエリを使用できます。派生テーブルの詳細については、Looker の派生テーブルのドキュメントをご覧ください。
sql
では、通常のデータベース テーブルを参照するだけでなく、LookML ビューや派生テーブルも参照できます。その場合は、次のコマンドを使用します。
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
このリファレンスでは SQL_TABLE_NAME
がリテラル文字列です。他の文字列に置き換える必要はありません。たとえば、key_customer_order_facts
派生テーブル内で key_customer
という名前の派生テーブルを参照する場合は、次のようになります。
view: key_customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
INNER JOIN
${key_customer.SQL_TABLE_NAME} AS key_customer
ON
order.customer_id = key_customer.id
GROUP BY 1
;;
}
}
sql
による Liquid 変数
sql
パラメータで Liquid 変数を使用することもできます。Liquid 変数を使用すると、フィールドの値、フィールドに関するデータ、フィールドに適用されたフィルタなどにアクセスできます。
date_start
と date_end
の Liquid 変数は、データを日付別に複数のテーブルに分割するデータベース言語(BigQuery など)に非常に役立ちます。詳しくは、こちらのヘルプセンター記事をご覧ください。
特に、_in_query
、_is_selected
、_is_filtered
Liquid の変数は、派生テーブルに興味深い機能を追加できます。クエリにフィールドやフィルタが含まれているかどうかに応じて、true または false が返されます。これらの true 値/false 値を適切に使用するために考慮すべき複雑度がいくつかあります。詳しくは、Liquid 変数のページをご覧ください。
たとえば、次の派生テーブルは、ユーザーが選択したフィールドに基づいてクエリを実行するデータベース テーブルを変更します。
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% dynamic if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% dynamic else %}
monthly_orders
{% dynamic endif %}
GROUP BY 1
;;
}
}
例
customer_order_facts
派生テーブルを作成します。
view: customer_order_facts {
derived_table: {
sql:
SELECT
customer_id,
COUNT( * ) AS lifetime_orders
FROM
order
GROUP BY 1
;;
}
}
注意点
sql
で参照されているテーブルに、現在の接続からアクセスできる必要があります
派生テーブルを含む views
は explore
または join
パラメータによって参照され、これらはモデルによって参照されます。どちらのデータベース接続を使用するかは、モデルが決定します(connection
パラメータのドキュメントを参照)。データベース接続自体は、Looker の [管理] セクションで定義します。sql
パラメータでテーブルを参照する場合、関連付けられた接続でテーブルにアクセスできる必要があります。
Looker フィールドの参照ではなく、sql
を使って未加工 SQL を使用する
派生テーブルの sql
パラメータに書き込む SQL は未加工の SQL である必要があり、これはデータベースの基盤となる列とテーブルを参照します。Looker のフィールド名やビュー名を参照しないでください。
派生テーブルで _filters['view_name.field_name']
を使用するには、sql_quote
が必要です
SQL ベースの派生テーブルを定義する際、_filters['view_name.field_name']
Liquid 変数を使用して SQL で値がレンダリングされ、フィルタが文字列値を返す場合は、出力を単一引用符で囲む必要があります。これを行うには、sql_quote
の Liquid フィルタを含めます。
それ以外の場合は、Liquid 変数を | sql_quote
で追加しないと、次の LookML 警告が表示されます。
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
詳しくは、Liquid 変数のリファレンス ページをご覧ください。