בדף הזה מוסבר על הפרמטר
sqlשהוא חלק מטבלה נגזרת.אפשר גם להשתמש ב-
sqlכחלק משדה, כמו שמתואר בדף התיעוד של הפרמטרsql(לשדות).
Usage
view: my_derived_table {
derived_table: {
sql:
SELECT *
FROM events
WHERE type NOT IN ('test', 'staff')
;;
...
}
}
|
היררכיה
sql |
ערך ברירת המחדל
ללא
מקבל
בלוק SQL
|
הגדרה
sql מאפשרת לכם לציין את ה-SQL שישמש ליצירת טבלה נגזרת. אפשר להשתמש בכל שאילתת SQL חוקית בפרמטר sql, כל עוד שאילתת ה-SQL כתובה ב-SQL גולמי ולא מפנה לשדות של Looker. כדי להבין טוב יותר את הנושא של טבלאות נגזרות, מומלץ לעיין בדף התיעוד טבלאות נגזרות ב-Looker.
בנוסף להפניה לטבלאות רגילות במסד נתונים, אפשר גם להפנות לתצוגות LookML או לטבלאות נגזרות ב-sql. כדי לעשות זאת, משתמשים בפקודה:
${view_or_derived_table_name.SQL_TABLE_NAME} AS view_or_derived_table_name
המחרוזת SQL_TABLE_NAME בהפניה הזו היא מחרוזת מילולית, ולא צריך להחליף אותה בשום דבר. לדוגמה, אם רוצים להפנות לטבלת נתונים נגזרת בשם key_customer בטבלת הנתונים הנגזרת key_customer_order_facts, יכול להיות שתכתבו משהו כזה:
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
;;
}
}
משתני Liquid עם sql
אפשר גם להשתמש במשתני Liquid עם הפרמטר sql. משתני Liquid מאפשרים לכם לגשת לנתונים כמו הערכים בשדה, נתונים על השדה ומסננים שמוחלים על השדה.
המשתנים date_start ו-date_end Liquid שימושיים מאוד בניבי מסדי נתונים שמחלקים נתונים למספר טבלאות לפי תאריך, כמו BigQuery. הסבר מפורט זמין בדף השיטות המומלצות בנושא שימוש ב-date_start וב-date_end עם מסנני תאריכים.
בפרט, משתני Liquid _in_query, _is_selected ו-_is_filtered יכולים להוסיף פונקציונליות מעניינת לטבלאות נגזרות. הן מחזירות את הערך true או false בהתאם לשאלה אם שדה או מסנן נכללו בשאילתה. יש כמה פרטים חשובים שצריך להביא בחשבון כדי להשתמש נכון בערכי True/False. מידע נוסף זמין בדף על משתני Liquid.
לדוגמה, הטבלה הנגזרת הזו משנה את טבלת מסד הנתונים שהיא מבצעת עליה שאילתה, על סמך השדות שהמשתמש בחר:
view: dynamic_order_counts {
derived_table: {
sql:
SELECT
period, number_of_orders
FROM
{% if dates.reporting_date._in_query %}
daily_orders
{% elsif dates.reporting_week._in_query %}
weekly_orders
{% else %}
monthly_orders
{% 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, צריך לוודא שיש גישה לטבלה בחיבור המשויך.
שימוש ב-SQL גולמי עם sql, ולא בהפניות לשדות Looker
ה-SQL שאתם כותבים לפרמטר של טבלה נגזרת sql צריך להיות SQL גולמי, עם הפניה לעמודות ולטבלאות הבסיסיות ממסד הנתונים שלכם. הוא לא יכול להכיל הפניות לשמות של שדות או תצוגות ב-Looker.
שימוש ב-_filters['view_name.field_name'] בטבלה נגזרת מחייב sql_quote
כשמגדירים טבלה נגזרת שמבוססת על SQL, אם משתמשים במשתנה Liquid _filters['view_name.field_name'] שבו הערך מוצג ב-SQL והמסנן מחזיר ערך מחרוזת, צריך להוסיף מרכאות בודדות סביב הפלט. כדי לעשות זאת, צריך לכלול את sql_quote מסנן Liquid.
אחרת, אם לא תצרפו את משתנה Liquid עם | sql_quote, תקבלו את אזהרת LookML הבאה:
Using "_filters[]" in Derived Table SQL without "sql_quote" is discouraged.
מידע נוסף זמין בדף העזרה בנושא משתני Liquid.