Usage
explore: explore_name {
sql_preamble: SQL STATEMENT ;;
}
|
היררכיה
sql_preamble |
ערך ברירת המחדל
ללא
אישור
ביטוי SQL
|
הגדרה
הפרמטר sql_preamble מציין הצהרת SQL שמופעלת לפני הפעלת שאילתות בכלי הניתוח. השימוש העיקרי ב-sql_preamble הוא ליצירת פונקציות בהגדרת המשתמש (UDF) ב-Google BigQuery. ברוב דיאלקטי מסדי הנתונים אפשר להתקין UDF ישירות בשרת מסד הנתונים, אבל Google BigQuery הוא חסר מצב (stateless), ולכן sql_preamble מספק את הפונקציונליות הזו.
שימוש ב-Liquid ב-sql_preamble
הפרמטר sql_preamble תומך ב-Liquid ובמאפייני משתמש, מה שמאפשר יצירה דינמית של SQL לתרחישי שימוש כמו הגדרת משתני סשן, בחירת מחסני נתונים או מסדי נתונים שונים, הטמעה של גיזום מחיצות ב-BigQuery וסינון גמיש של נתונים באמצעות אינטראקציה ישירה יותר עם מסד הנתונים הבסיסי.
דפוסי השימוש הבאים ב-Liquid נתמכים בפרמטר 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
אין תמיכה בדפוסי השימוש הבאים ב-Liquid ב-sql_preamble:
valuerendered_valuefilterable_valuelinklinked_value_field._name
דוגמאות
שימוש ב-sql_preamble כדי לציין הזמנה ב-BigQuery
מציינים הזמנה ב-Google BigQuery לשימוש בשאילתות של Explore באמצעות הצהרת ה-SQL SET @@reservation של BigQuery בפרמטר sql_preamble:
explore: orders {
sql_preamble:
SET @@reservation='projects/your-project/locations/your-location/reservations/your-reservation';
}
שימוש ב-sql_preamble כדי להוסיף חציון זמני
יוצרים פונקציה בהגדרת המשתמש (UDF) ב-Google BigQuery שמחשבת את החציון באמצעות הצהרת CREATE TEMP FUNCTION של Google BigQuery, ומוסיפים את פונקציית החציון ל-SQL של Google BigQuery לפני כל שאילתה שמופעלת ב'ניתוח נתונים'.
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 )
));
;;
}
שימוש ב-Liquid ב-sql_preamble כדי להתאים את שם הטבלה לשפה המקומית
אפשר להשתמש ב-Liquid ב-sql_preamble כדי ליצור טבלה זמנית ששמה מבוסס על השפה שהמשתמש בחר, כך שמודל LookML יחיד יכול להתאים למוסכמות שונות למתן שמות פנימיים:
explore: orders {
sql_preamble:
WITH {{ _localization['storage_table_name'] }} AS (select * from users);;
...
}
במקום להשתמש בשם מקודד כמו mytable לטבלה הזמנית, הקוד הזה יחליף את משתנה Liquid במחרוזת בפועל שמוגדרת בקובץ המחרוזות של הלוקאל עבור המפתח storage_table_name. מידע נוסף זמין במאמר בנושא שימוש באזור בשפות משתנות של Liquid.
שאילתת Looker שאחרי ההקדמה תפנה לטבלה הזו עם השם הדינמי. לדוגמה, בשאילתת SQL נעשה שימוש ב-FROM {{ _localization['storage_table_name'] }}.