Usage
derived_table: {
create_process: {
sql_step:
CREATE TABLE ${SQL_TABLE_NAME}
(customer_id int(11),
lifetime_orders int(11)) ;;
sql_step:
INSERT INTO ${SQL_TABLE_NAME}
(customer_id,
lifetime_orders)
SELECT customer_id, COUNT(*)
AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
|
היררכיה
create_process |
ערך ברירת המחדל
ללא
אישור
פרמטר משנה אחד או יותר של sql_step
|
הגדרה
אם הדיאלקט של מסד הנתונים שלכם משתמש בפקודות מותאמות אישית של שפת הגדרת נתונים (DDL), אתם יכולים להשתמש ב-create_process כדי ליצור טבלאות נגזרות מתמידות (PDT). create_process מגדיר רשימה של הצהרות SQL שיופעלו בסדר שבו הן מופיעות. כל הצהרת SQL מצוינת באמצעות פרמטר המשנה sql_step. כל תת-פרמטר sql_step יכול לכלול כל שאילתת SQL חוקית. אפשר להגדיר כמה פרמטרים משניים של sql_step, והם יופעלו אחד אחרי השני, לפי הסדר שבו הם צוינו. Looker מנפיק את ההצהרות בפרמטרים המשניים sql_step כמו שהן, בלי תיקון השגיאות הרגיל של Looker.
לדוגמה, חלק מהניבים של מסדי נתונים לא תומכים ב-CREATE TABLE as SELECT כהצהרת SQL יחידה, ונדרשות הצהרות SQL נפרדות. כתוצאה מכך, אי אפשר ליצור בניבים האלה טבלאות נגזרות מתמידות (PDT) שמבוססות על SQL. הפרמטר create_process מספק דרך חלופית ליצירת PDT, על ידי יצירת רשימה של הצהרות SQL נפרדות שמונפקות ברצף.
אפשר גם להשתמש ב-create_process כדי לתמוך בדיאלקטים כמו מודלים של למידת מכונה לחיזוי BigQuery ML של Google.
הפרמטר create_process מציין שאתם כותבים את ההצהרות המלאות של CREATE עבור הטבלה הנגזרת, כולל כל האינדקסים. כדי להוסיף אינדקס לטבלה נגזרת עם create_process, משתמשים בפרמטר sql_step כדי לציין את ה-SQL של האינדקס.
ב-PDT שהוגדרו באמצעות create_process, אי אפשר להשתמש באף אחד מהפרמטרים הבאים:
דוגמה
אפשר ליצור טבלת נגזרת מתמידה (PDT) של ctasless_customer_order_facts במסד נתונים של MySQL בשני שלבים. קודם מריצים את משפט ה-SQL CREATE TABLE, שמוגדר על ידי פרמטר המשנה הראשון sql_step. שנית, מריצים את הצהרת ה-SQL INSERT INTO עם משפט SELECT, שמוגדר על ידי תת-הפרמטר השני sql_step:
view: ctasless_customer_order_facts {
derived_table: {
datagroup_trigger: some_datagroup
create_process: {
sql_step: CREATE TABLE ${SQL_TABLE_NAME} (
customer_id int(11),
lifetime_orders int(11)
) ;;
sql_step: INSERT INTO ${SQL_TABLE_NAME}(customer_id, lifetime_orders)
SELECT customer_id, COUNT(*) AS lifetime_orders
FROM order
GROUP BY customer_id ;;
}
}
}
דברים שכדאי לקחת בחשבון
אופרטור החלפה ${SQL_TABLE_NAME}
אפשר להשתמש באופרטור ההחלפה ${SQL_TABLE_NAME} כדי להחליף את השם המחושב של ה-PDT שנוצר. כך אפשר לוודא שהצהרת ה-SQL תכלול בצורה נכונה את שם ה-PDT שצוין בפרמטר view של LookML.
create_processחייב ליצור טבלה עם השם שמצוין על ידי אופרטור ההחלפה${SQL_TABLE_NAME}, אחרת היא תיבנה מחדש מאפס בכל מרווח בדיקה של טריגר שמוגדר בהגדרה Datagroup and PDT Maintenance Schedule של חיבור (ברירת המחדל היא חמש דקות). הדבר עלול לגרום לתנועת שאילתות לא צפויה במסד הנתונים או במחסן הנתונים.
שימוש ב-sql_create כדי ליצור PDT בשלב אחד
אם הדיאלקט של מסד הנתונים דורש פקודות DDL בהתאמה אישית, ואתם רוצים ליצור PDT בשלב אחד, אתם יכולים להשתמש ב-sql_create כדי להגדיר הצהרת SQL CREATE מלאה להפעלה וליצור PDT בשלב אחד.
אי אפשר להשתמש בטבלאות שהוגדרו באמצעות create_process ל-PDT מצטברות
כדי להשתמש ב-PDT מבוסס-SQL כ-PDT מצטבר, צריך להגדיר שאילתה באמצעות הפרמטר sql. אי אפשר לבנות באופן מצטבר PDTs מבוססי-SQL שמוגדרים באמצעות הפרמטר sql_create או הפרמטר create_process.
הסיבה לכך היא ש-Looker משתמש בפקודה INSERT או MERGE כדי ליצור את הגידולים עבור PDT מצטבר. אי אפשר להגדיר את טבלת הנתונים הנגזרים באמצעות הצהרות שפה להגדרת נתונים (DDL) בהתאמה אישית, כי Looker לא יוכל לקבוע אילו הצהרות DDL נדרשות כדי ליצור תוספת מדויקת.