Usage
datagroup: datagroup_name {
max_cache_age: "24 hours"
sql_trigger: SELECT max(id) FROM my_tablename ;;
interval_trigger: "12 hours"
label: "desired label"
description: "description string"
}
|
היררכיה
datagroup |
ערך ברירת המחדל
ללא
אישור
מזהה של קבוצת הנתונים, בתוספת פרמטרים משניים שמגדירים את המאפיינים של קבוצת הנתונים.
|
הגדרה
משתמשים ב-datagroup כדי להקצות מדיניות לשמירת נתונים במטמון עבור Explores או כדי לציין שיטת התמדה עבור טבלאות נגזרות קבועות (PDT). אם רוצים להשתמש בכמה כללים שונים ל-Explore ול-PDT שונים, צריך להשתמש בפרמטר datagroup נפרד כדי לציין כל כלל.
מזינים שם ייחודי לקבוצת הנתונים, שכולל רק אותיות, מספרים וקווים תחתונים. אסור להשתמש בתווים אחרים.
אפשר להוסיף תווית ותיאור לקבוצת הנתונים:
-
label: מציין תווית אופציונלית לקבוצת הנתונים. פרטים נוספים מופיעים בקטעlabelוdescriptionבדף הזה. -
description: מציין תיאור אופציונלי לקבוצת הנתונים, שאפשר להשתמש בו כדי להסביר את המטרה והמנגנון של קבוצת הנתונים. פרטים נוספים מופיעים בקטעlabelוdescriptionבדף הזה.
מציינים את הפרטים של מדיניות השמירה במטמון וההתמדה באמצעות פרמטרים משניים של datagroup:
-
max_cache_age: מציין מחרוזת שמגדירה תקופת זמן. אם משך הזמן שחלף מאז שהשאילתה נשמרה במטמון חורג מתקופת הזמן, Looker מבטל את התוקף של המטמון. בפעם הבאה שהשאילתה מופעלת, Looker שולח את השאילתה למסד הנתונים כדי לקבל תוצאות עדכניות. פרטים נוספים מופיעים בקטעmax_cache_ageבדף הזה. -
sql_trigger: מציינת שאילתת SQL שמחזירה שורה אחת עם עמודה אחת. אם הערך שמוחזר על ידי השאילתה שונה מהתוצאות הקודמות של השאילתה, קבוצת הנתונים עוברת למצב מופעל. פרטים נוספים מופיעים בקטעsql_triggerבדף הזה. -
interval_trigger: מציין לוח זמנים להפעלת קבוצת הנתונים, כמו"24 hours". פרטים נוספים מופיעים בקטעinterval_triggerבדף הזה.
במקרים רבים, הפתרון הטוב ביותר הוא להשתמש ב-max_cache_age בשילוב עם sql_trigger או interval_trigger. מציינים ערך של sql_trigger או interval_trigger שתואם לטעינת הנתונים (ETL) למסד הנתונים, ואז מציינים ערך של max_cache_age שיבטל את הנתונים הישנים אם ה-ETL ייכשל. הפרמטר max_cache_age מבטיח שאם המטמון של קבוצת נתונים לא ינוקה על ידי sql_trigger או interval_trigger, תוקף הרשומות במטמון יפוג אחרי פרק זמן מסוים. כך, מצב הכשל של קבוצת נתונים יהיה שליחת שאילתה למסד הנתונים במקום הצגת נתונים לא עדכניים ממטמון Looker.
קבוצת נתונים לא יכולה לכלול גם את הפרמטר
sql_triggerוגם את הפרמטרinterval_trigger. אם מגדירים קבוצת נתונים עם שני הפרמטרים, קבוצת הנתונים תשתמש בערךinterval_triggerותתעלם מהערךsql_trigger, כי הפרמטרsql_triggerמחייב שימוש במשאבי מסד נתונים כשמבצעים שאילתה במסד הנתונים.אם משתמשים במאפייני משתמש כדי לציין את פרמטרי החיבור, צריך ליצור חיבור נפרד באמצעות שדות של ביטול ברירת מחדל של PDT כדי להגדיר מדיניות של שמירת נתונים במטמון של קבוצת נתונים באמצעות טריגר של שאילתת SQL.
גם בלי להגדיר חריגות ל-PDT, אפשר להשתמש בקבוצת נתונים עבור המודל והניתוחים שלו, כל עוד מגדירים את מדיניות השמירה במטמון של קבוצת הנתונים באמצעותmax_cache_ageבלבד, ולא באמצעותsql_trigger.
max_cache_age
הפרמטר max_cache_age מציין מחרוזת שמכילה מספר שלם ואחריו את המילים seconds, minutes או hours. תקופת הזמן הזו היא תקופת הזמן המקסימלית שבה אפשר להשתמש בתוצאות שנשמרו במטמון בשאילתות של ניתוח נתונים שמשתמשות בקבוצת הנתונים.
אם גיל המטמון של שאילתה חורג מהערך max_cache_age, Looker מבטל את תוקף המטמון. בפעם הבאה שהשאילתה מופעלת, Looker שולח את השאילתה למסד הנתונים כדי לקבל תוצאות עדכניות. מידע על משך הזמן שבו הנתונים מאוחסנים במטמון זמין בדף התיעוד בנושא שמירת שאילתות במטמון.
הפרמטר max_cache_age מגדיר רק מתי המטמון יבוטל, הוא לא מפעיל את הבנייה מחדש של PDT. אם מגדירים קבוצת נתונים עם max_cache_age בלבד, תוצג אזהרה לגבי אימות LookML אם יש טבלאות נגזרות שמוקצות לקבוצת הנתונים. אם משאירים טבלה נגזרת שמוקצית לקבוצת נתונים עם פרמטר max_cache_age בלבד, הטבלה הנגזרת תיבנה כשהשאילתה הראשונה תופעל על הטבלה, אבל היא תישאר בסכימת הגירוד ללא הגבלת זמן ולא תיבנה מחדש, גם אם תופעל עליה שאילתה שוב. אם רוצים לבנות מחדש PDT במרווח זמן ספציפי, צריך להוסיף פרמטר interval_trigger לקבוצת הנתונים כדי להגדיר לוח זמנים לבנייה מחדש של PDT.
sql_trigger
משתמשים בפרמטר sql_trigger כדי לציין שאילתת SQL שמחזירה בדיוק שורה אחת עם עמודה אחת. Looker מריץ את שאילתת ה-SQL במרווחי זמן שמוגדרים בשדה Datagroup and PDT Maintenance Schedule (קבוצת נתונים ותזמון תחזוקה של PDT) בחיבור למסד הנתונים. אם השאילתה מחזירה ערך שונה מהתוצאה הקודמת, קבוצת הנתונים עוברת למצב מופעל. אחרי שהפעולה datagroup מופעלת, Looker בונה מחדש את כל ה-PDT שצוין בהם הפרמטר datagroup_trigger של datagroup. אחרי שהבנייה מחדש של ה-PDT מסתיימת, קבוצת הנתונים עוברת למצב מוכן ו-Looker מבטל את התוקף של התוצאות שנשמרו במטמון של כל ניתוח באמצעות קבוצת הנתונים הזו.
בדרך כלל, sql_trigger מציין שאילתת SQL שמציינת מתי התרחש טעינה חדשה של נתונים (ETL), למשל על ידי שליחת שאילתה ל-max(ID) בטבלה. אפשר גם להשתמש ב-sql_trigger כדי לציין שעה מסוימת ביום. לשם כך, צריך לשלוח שאילתה לגבי התאריך הנוכחי ולהוסיף לחותמת הזמן שעות נוספות לפי הצורך כדי להגיע לשעה הרצויה, למשל 4:00.
חשוב לשים לב לנקודות הבאות לגבי sql_trigger:
- אי אפשר להשתמש ב-
sql_triggerאם החיבור למסד הנתונים משתמש ב-OAuth או במאפייני משתמש והשבתתם את ה-PDT עבור החיבור. הסיבה לכך היא ש-Looker צריך נתוני כניסה סטטיים כדי לגשת למסד הנתונים ולהריץ את השאילתה שצוינה בפרמטרsql_trigger. כשמפעילים PDT, אפשר להשתמש בשדות PDT Overrides כדי לספק ל-Looker פרטי כניסה סטטיים נפרדים לתהליכי PDT, גם אם החיבור משתמש בפרטי כניסה דינמיים כמו OAuth או מאפייני משתמש. אבל אם השבתתם את ה-PDT, ואם החיבור שלכם משתמש ב-OAuth או במאפייני משתמש, לא תוכלו לספק ל-Looker את פרטי הכניסה הסטטיים של המשתמש שנדרשים לשאילתותsql_trigger. - Looker לא מבצע המרה של אזור הזמן עבור
sql_trigger. אם רוצים להפעיל את קבוצת הנתונים בשעה ספציפית ביום, צריך להגדיר את הטריגר באזור הזמן שבו מוגדר מסד הנתונים.
כדי לקבל רעיונות להגדרת שאילתות SQL להפעלת קבוצת נתונים, אפשר לעיין בדוגמאות האלה ממאמרי העזרה בנושא הפרמטר sql_trigger.
interval_trigger
אפשר להשתמש בתת-פרמטר האופציונלי interval_trigger כדי לציין משך זמן לבנייה מחדש. בפרמטר interval_trigger מעבירים מחרוזת שמכילה מספר שלם ואחריו את המילים seconds, minutes או hours.
label וגם description
אפשר להשתמש בפרמטרים המשניים האופציונליים label ו-description כדי להוסיף תווית בהתאמה אישית ותיאור של קבוצת הנתונים. אפשר גם לבצע לוקליזציה של פרמטרים משניים באמצעות קבצים של מחרוזות לוקאל.
פרמטרים משניים אלה מוצגים בדף Datagroups בקטע Database בחלונית Admin. מידע נוסף על אופן ההצגה של קבוצות הנתונים זמין בדף התיעוד הגדרות אדמין – קבוצות נתונים.
דוגמאות
בדוגמאות הבאות מודגשים תרחישי השימוש של datagroup, כולל:
- יצירת מדיניות אחסון במטמון כדי לאחזר תוצאות חדשות
- יצירת קבוצת נתונים לתזמון משלוחים ביום האחרון של כל חודש
- שימוש בקבוצת נתונים עם PDTs מדורגים
- שיתוף קבוצות נתונים בין קובצי מודלים
יצירת מדיניות שמירה במטמון כדי לאחזר תוצאות חדשות בכל פעם שיש נתונים חדשים או לפחות כל 24 שעות
כדי ליצור מדיניות אחסון במטמון שמביאה תוצאות חדשות בכל פעם שיש נתונים חדשים או לפחות כל 24 שעות, צריך לבצע את הפעולות הבאות:
- משתמשים בקבוצת הנתונים
orders_datagroup(בקובץ המודל) כדי לתת שם למדיניות השמירה במטמון. - משתמשים בפרמטר
sql_triggerכדי לציין את השאילתה שמציינת שיש נתונים עדכניים:select max(id) from my_tablename. בכל פעם שהנתונים מתעדכנים, השאילתה הזו מחזירה מספר חדש. - משתמשים בהגדרה
max_cache_ageכדי לבטל את תוקף הנתונים אם הם נשמרו במטמון למשך 24 שעות. - אפשר להשתמש בפרמטרים האופציונליים
labelו-descriptionכדי להוסיף תווית מותאמת אישית ותיאור של קבוצת הנתונים.
datagroup: orders_datagroup {
sql_trigger: SELECT max(id) FROM my_tablename ;;
max_cache_age: "24 hours"
label: "ETL ID added"
description: "Triggered when new ID is added to ETL log"
}
כדי להשתמש במדיניות השמירה במטמון orders_datagroup כברירת המחדל לניתוחים ב-Explore במודל, משתמשים בפרמטר persist_with ברמת המודל ומציינים את orders_datagroup:
persist_with: orders_datagroup
כדי להשתמש במדיניות בנושא שמירת נתונים במטמון orders_datagroup עבור ניתוח נתונים ספציפי, מוסיפים את הפרמטר persist_with מתחת לפרמטר explore ומציינים את orders_datagroup. אם יש קבוצת נתונים שמוגדרת כברירת מחדל ברמת המודל, אפשר להשתמש בפרמטר persist_with בתוך תג explore כדי לבטל את הגדרת ברירת המחדל.
explore: customer_facts {
persist_with: orders_datagroup
...
}
כדי להשתמש במדיניות שמירת הנתונים במטמון של קבוצת נתונים לצורך בנייה מחדש של PDT, אפשר להוסיף את datagroup_trigger מתחת לפרמטר derived_table ולציין את orders_datagroup:orders_datagroup
view: customer_order_facts {
derived_table: {
datagroup_trigger: orders_datagroup
...
}
}
יצירת קבוצת נתונים לתזמון משלוחים ביום האחרון של כל חודש
אולי תרצו ליצור לוח זמנים לשליחת תוכן בסוף כל חודש. עם זאת, מספר הימים בחודש משתנה. אתם יכולים ליצור קבוצת נתונים שתפעיל את העברת התוכן בסוף כל חודש – בלי קשר למספר הימים בחודש מסוים.
יוצרים קבוצת נתונים באמצעות הצהרת SQL שתופעל בסוף כל חודש:
datagroup: month_end_datagroup { sql_trigger: SELECT (EXTRACT(MONTH FROM DATEADD( day, 1, GETDATE()))) ;; description: "Triggered on the last day of each month" }הדוגמה הזו היא ב-Redshift SQL, ויכול להיות שיהיה צורך לבצע בה שינויים קלים כדי להשתמש בה במסדי נתונים שונים.
הצהרת ה-SQL הזו מחזירה את החודש שבו חל מחר – ביום האחרון של החודש, מחר הוא החודש הבא – ולכן קבוצת הנתונים תופעל. ביום השני, מחר הוא באותו חודש, ולכן קבוצת הנתונים לא מופעלת.
בוחרים את קבוצת הנתונים בלוח זמנים חדש או קיים.
לוחות זמנים שמבוססים על קבוצות נתונים מופעלים רק אחרי שתהליך היצירה מחדש מסתיים לכל ה-PDT שמוגדרים עם הפרמטר של קבוצת הנתונים, וכך מבטיחים שהמשלוח יכלול את הנתונים העדכניים ביותר.
שימוש בקבוצת נתונים עם טבלאות PDT מדורגות
במקרה של טבלאות נגזרות מדורגות קבועות, שבהן יש הפניה לטבלה נגזרת קבועה (PDT) אחת בהגדרה של טבלה נגזרת קבועה אחרת, אפשר להשתמש בקבוצת נתונים כדי לציין אסטרטגיית שמירה לשרשרת של טבלאות נגזרות מדורגות.
לדוגמה, הנה חלק מקובץ מודל שמגדיר קבוצת נתונים בשם user_facts_etl וניתוח Explore בשם user_stuff. התכונה user_stuff ניתוח נתונים נשמרת עם user_facts_etl קבוצת הנתונים:
datagroup: user_facts_etl {
sql_trigger: SELECT max(ID) FROM etl_jobs ;;
}
explore: user_stuff {
persist_with: user_facts_etl
from: user_facts_pdt_1
join: user_facts_pdt_2 {
...
}
...
}
התצוגה של user_stuff Explore מצטרפת לתצוגה של user_facts_pdt_1 עם התצוגה של user_facts_pdt_2. שני התצוגות האלה מבוססות על PDT שמשתמש ב-datagroup user_facts_etl כטריגר של התמדה. הטבלה הנגזרת user_facts_pdt_2 מפנה לטבלה הנגזרת user_facts_pdt_1, ולכן אלה טבלאות PDT מדורגות. הנה חלק מקוד LookML מקובצי התצוגה של ה-PDT האלה:
view: user_facts_pdt_1 {
derived_table: {
datagroup_trigger: user_facts_etl
explore_source: users {
column: customer_ID {field:users.id}
column: city {field:users.city}
...
}
}
}
view: user_facts_pdt_2 {
derived_table: {
sql:
SELECT ...
FROM ${users_facts_pdt_1.SQL_TABLE_NAME} ;;
datagroup_trigger: user_facts_etl
}
}
אם יש לכם PDTs מדורגים, אתם צריכים לוודא של-PDTs אין מדיניות לא תואמת של שמירת נתונים במטמון של קבוצת נתונים.
הכלי Looker regenerator בודק את הסטטוס ומתחיל לבנות מחדש את טבלאות ה-PDT האלה באופן הבא:
- כברירת מחדל, הגנרטור מחדש של Looker בודק את השאילתה
sql_triggerשל קבוצת הנתונים כל חמש דקות (האדמין שלכם ב-Looker יכול לציין את המרווח הזה באמצעות ההגדרה Datagroup and PDT Maintenance Schedule בחיבור למסד הנתונים). - אם הערך שמוחזר על ידי השאילתה
sql_triggerשונה מהתוצאה של השאילתה בבדיקה הקודמת, קבוצת הנתונים עוברת למצב 'הופעלה'. בדוגמה הזו, אם בטבלהetl_jobsיש ערך חדש שלID, מופעלת קבוצת הנתוניםuser_facts_etl. אחרי שהטריגר מופעל ב-datagroup
user_facts_etl, המערכת של Looker יוצרת מחדש את כל טבלאות ה-PDT שמשתמשות ב-datagroup (כלומר, את כל טבלאות ה-PDT שהוגדרו עםdatagroup_trigger: user_facts_etl). בדוגמה הזו, המערכת יוצרת מחדש אתuser_facts_pdt_1, ואז יוצרת מחדש אתuser_facts_pdt_2.אם ל-PDT יש את אותו
datagroup_trigger, המערכת בונה מחדש את ה-PDT לפי סדר התלות, קודם בונה את הטבלאות שאליהן מתייחסות טבלאות אחרות. מידע נוסף על האופן שבו Looker בונה מחדש טבלאות נגזרות מדורגות זמין בדף התיעוד בנושא טבלאות נגזרות ב-Looker.כשהכלי ליצירה מחדש בונה מחדש את כל ה-PDT בקבוצת הנתונים, הכלי מוציא את קבוצת הנתונים
user_facts_etlממצב ההפעלה.אחרי שקבוצת הנתונים
user_facts_etlכבר לא במצב מופעל, Looker מאפס את מטמון הנתונים של כל המודלים והניתוחים שמשתמשים בקבוצת הנתוניםuser_facts_etl(כלומר, כל המודלים והניתוחים שמוגדרים עםpersist_with: user_facts_etl). בדוגמה הזו, המשמעות היא ש-Looker מאפס את מטמון הנתונים של הניתוחuser_stuff.כל העברות התוכן המתוזמנות שמבוססות על קבוצת הנתונים
user_facts_etlיישלחו. בדוגמה הזו, אם יש מסירה מתוזמנת שכוללת שאילתה מתוךuser_stuffכלי הניתוחים, השאילתה המתוזמנת תאוחזר ממסד הנתונים כדי להציג תוצאות עדכניות.
שיתוף של קבוצות נתונים בין קובצי מודלים
בדוגמה הזו אפשר לראות איך משתפים קבוצות נתונים עם כמה קובצי מודלים. היתרון בגישה הזו הוא שאם צריך לערוך קבוצת נתונים, צריך לערוך אותה רק במקום אחד כדי שהשינויים יחולו על כל המודלים.
כדי לשתף קבוצות נתונים עם כמה קובצי מודלים, קודם יוצרים קובץ נפרד שמכיל רק את קבוצות הנתונים, ואז משתמשים בפרמטר include כדי include את קובץ קבוצות הנתונים בקובצי המודלים.
יצירת קובץ של קבוצות נתונים
יוצרים קובץ .lkml נפרד שיכיל את קבוצות הנתונים. אפשר ליצור קובץ .lkml של קבוצת נתונים באותה דרך שבה יוצרים קובץ .lkml נפרד של ניתוח.
בדוגמה הזו, השם של קובץ datagroups הוא datagroups.lkml:
datagroup: daily {
max_cache_age: "24 hours"
sql_trigger: SELECT CURRENT_DATE();;
}
הכללת קובץ datagroups בקבצים של המודל
אחרי שיוצרים את קובץ קבוצות הנתונים, אפשר include אותו בשני המודלים ולהשתמש ב-persist_with כדי להחיל את קבוצת הנתונים על ניתוחים ספציפיים במודלים או על כל הניתוחים במודל.
לדוגמה, שני קובצי המודל הבאים include את הקובץ datagroups.lkml.
שם הקובץ הוא ecommerce.model.lkml. התג daily datagroup משמש ברמה explore כדי שהוא יחול רק על orders Explore:
include: "datagroups.lkml"
connection: "database1"
explore: orders {
persist_with: daily
}
הקובץ הבא נקרא inventory.model.lkml. קבוצת הנתונים daily משמשת ברמה model כדי שהיא תחול על כל הניתוחים בקובץ המודל:
include: "datagroups.lkml"
connection: "database2"
persist_with: daily
explore: items {
}
explore: products {
}