sql_preamble

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:

אין תמיכה בדפוסי השימוש הבאים ב-Liquid ב-sql_preamble:

  • value
  • rendered_value
  • filterable_value
  • link
  • linked_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'] }}.