‫sql (לטבלאות נגזרות)

בדף הזה מוסבר על הפרמטר 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.