Penggunaan
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
Hierarki
sql_preamble |
Nilai Default
Tidak ada
Menerima
Ekspresi SQL
|
Definisi
Parameter sql_preamble menentukan pernyataan SQL yang dijalankan sebelum kueri di Eksplorasi dijalankan. Penggunaan utama sql_preamble adalah untuk membuat fungsi yang ditentukan pengguna (UDF) di Google BigQuery. Sebagian besar dialek database memungkinkan Anda menginstal UDF secara langsung di server database, tetapi Google BigQuery tidak memiliki status, sehingga sql_preamble menyediakan fungsi ini.
Menggunakan Liquid di sql_preamble
Parameter sql_preamble mendukung atribut pengguna dan Liquid, yang memungkinkan pembuatan SQL dinamis untuk kasus penggunaan seperti menyetel variabel sesi, memilih berbagai data warehouse atau database, menerapkan penghapusan partisi di BigQuery, dan memungkinkan pemfilteran data yang fleksibel dengan berinteraksi dengan database pokok secara lebih langsung.
Pola penggunaan Liquid berikut didukung dalam parameter sql_preamble:
_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
Pola penggunaan Liquid berikut tidak didukung di sql_preamble:
valuerendered_valuefilterable_valuelinklinked_value_field._name
Contoh
Menggunakan sql_preamble untuk menentukan reservasi BigQuery
Tentukan reservasi Google BigQuery yang akan digunakan untuk kueri Eksplorasi dengan menggunakan pernyataan SQL BigQuery SET @@reservation dalam parameter sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
Menggunakan sql_preamble untuk menambahkan median sementara
Buat fungsi buatan pengguna (UDF) di Google BigQuery yang menghitung median menggunakan pernyataan CREATE TEMP FUNCTION Google BigQuery, dan sisipkan fungsi median ke dalam SQL Google BigQuery sebelum setiap kueri di Eksplorasi dijalankan.
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 )
));
;;
}
Menggunakan Liquid di sql_preamble untuk melokalkan nama tabel
Gunakan Liquid di sql_preamble untuk membuat tabel sementara yang diberi nama berdasarkan bahasa yang dipilih pengguna, sehingga satu model LookML dapat beradaptasi dengan berbagai konvensi penamaan internal:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
Daripada menggunakan nama yang di-hardcode seperti mytable untuk tabel sementara, kode ini akan mengganti variabel Liquid dengan string sebenarnya yang ditentukan dalam file string lokal untuk kunci storage_table_name. Lihat Menggunakan lokalitas dalam variabel Liquid untuk mengetahui informasi selengkapnya.
Kueri Looker yang mengikuti pengantar kemudian akan mereferensikan tabel yang diberi nama secara dinamis ini. Misalnya, kueri SQL akan menggunakan FROM {{ _localization['storage_table_name'] }}.