用途
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
階層
sql_preamble |
デフォルト値
なし
許可
SQL 式 |
定義
sql_preamble パラメータは、Explore のクエリが実行される前に実行される SQL ステートメントを指定します。sql_preamble の主な用途は、Google BigQuery でユーザー定義関数(UDF)を作成することです。ほとんどのデータベース言語では、UDF をデータベース サーバーに直接インストールできますが、Google BigQuery はステートレスであるため、sql_preamble がこの機能を提供します。
sql_preamble で Liquid を使用する
sql_preamble パラメータは Liquid とユーザー属性をサポートしています。これにより、セッション変数の設定、さまざまなウェアハウスやデータベースの選択、BigQuery でのパーティション プルーニングの実装、基盤となるデータベースとのより直接的なやり取りによる柔軟なデータ フィルタリングなど、ユースケースで動的な SQL 生成が可能になります。
sql_preamble パラメータでは、次の Liquid の使用パターンがサポートされています。
_filters['view_name.field_name']{% date_start date_filter_name %}{% date_end date_filter_name %}{% condition filter_name %} sql_or_lookml_reference {% endcondition %}{% if %} sql_or_lookml_reference {% else %} other_value {% endif %}{% parameter parameter_name %}parameter_name._parameter_value_user_attributes['name_of_attribute']_localization['localization_key']_model._name_explore._name_explore._dashboard_url_query._query_timezoneview_name._in_queryview_name.field_name._in_queryview_name.field_name._is_selectedview_name.field_name._is_filtered_view._name
sql_preamble では、次の Liquid の使用パターンはサポートされていません。
valuerendered_valuefilterable_valuelinklinked_value_field._name
例
sql_preamble を使用して BigQuery 予約を指定する
sql_preamble パラメータで BigQuery SET @@reservation SQL ステートメントを使用して、Looker Explore のクエリに使用する Google BigQuery 予約を指定します。
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
sql_preamble を使用して一時的な中央値を追加する
Google BigQuery でユーザー定義関数(UDF)を作成します。この関数は、Google BigQuery の CREATE TEMP FUNCTION ステートメントを使用して中央値を計算し、Explore の各クエリが実行される前に中央値関数を Google BigQuery SQL に挿入します。
explore: salary {
sql_preamble:
CREATE TEMP FUNCTION MEDIAN(a_num ARRAY<FLOAT64>)
RETURNS FLOAT64 AS ((
SELECT
AVG(num)
FROM (
SELECT
row_number() OVER (ORDER BY num) -1 as rn
, num
FROM UNNEST(a_num) num
)
WHERE
rn = TRUNC(ARRAY_LENGTH(a_num)/2)
OR (
MOD(ARRAY_LENGTH(a_num), 2) = 0 AND
rn = TRUNC(ARRAY_LENGTH(a_num)/2)-1 )
));
;;
}
sql_preamble で Liquid を使用してテーブル名をローカライズする
sql_preamble で Liquid を使用して、ユーザーが選択した言語に基づいて名前が付けられた一時テーブルを作成します。これにより、単一の LookML モデルをさまざまな内部命名規則に適応させることができます。
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
このコードでは、一時テーブルに mytable などのハードコードされた名前を使用する代わりに、キー storage_table_name のロケール文字列ファイルで定義されている実際の文字列で Liquid 変数を置き換えます。詳しくは、Liquid 変数でのロケールの使用をご覧ください。
プリアンブルに続く Looker クエリは、この動的に名前が付けられたテーブルを参照します。たとえば、SQL クエリでは FROM {{ _localization['storage_table_name'] }} が使用されます。