בדף הזה מתייחסים לפרמטר
explore_sourceשהוא תת-פרמטר שלderived_table.
explore_sourceיכול להיות גם תת-פרמטר שלtest, כפי שמתואר בדף התיעוד של הפרמטרtest.
Usage
derived_table: customer_order_facts {
explore_source: orders {
column: customer_id {
field: orders.customer_id
}
column: order_amount {
field: orders.sale_price
}
column: item_qty {
field: orders.number_items
}
derived_column: average_item_price {
sql: order_amount / item_qty ;;
}
timezone: "America/Los_Angeles"
}
}
|
היררכיה
explore_source |
ערך ברירת המחדל
ללא
אישור
המזהה של הניתוח שבו נגזרת הטבלה הנגזרת מבוססת LookML, בתוספת פרמטרים משניים שמגדירים את הטבלה הנגזרת מבוססת LookML.
|
הגדרה
יש שתי דרכים ליצור טבלה נגזרת, שאפשר להשתמש בה כאילו הייתה טבלה רגילה במסד הנתונים: טבלאות נגזרות מקוריות, שמוגדרות באמצעות פרמטרים של LookML, וטבלאות נגזרות שמבוססות על SQL, שמוגדרות באמצעות הצהרות של שאילתות SQL.
הפרמטר explore_source משמש לטבלאות נגזרות מקוריות. בפרמטר הזה מגדירים אילו עמודות ייכללו בטבלת נתונים נגזרת מקורית, אילו מסננים יוחלו על טבלת הנתונים הנגזרת המקורית, אם להגביל או למיין את השורות של טבלת הנתונים הנגזרת המקורית, ואם להמיר את השדות מבוססי-הזמן של טבלת הנתונים הנגזרת המקורית לאזור זמן אחר.
הגדרה של טבלה נגזרת מבוססת LookML
אפשר להשתמש במגוון פרמטרים בטבלה נגזרת מבוססת LookML (NDT), ורבים מהם הם אופציונליים. התחביר להגדרת טבלה נגזרת מבוססת LookML (NDT) הוא:
explore_source: identifier {
bind_all_filters: yes
column: identifier {
field: field_name
}
derived_column: identifier {
sql: SQL expression ;;
}
expression_custom_filter: [custom filter expression]
filters: [field_name_1: "string", field_name_2: "string", ...]
limit: number
sorts: [field_name_1: asc | desc, field_name_2: asc | desc, ...]
timezone: "string"
}
בטבלה הבאה מפורט מידע על כל פרמטר שאפשר להשתמש בו כדי להגדיר טבלה נגזרת מבוססת LookML (NDT):
| שם הפרמטר | תיאור | דוגמה |
|---|---|---|
bind_filters | מעבירה מסנן משאילתת הניתוח לשאילתת המשנה של הטבלה הנגזרת מבוססת LookML (NDT). כדי להגדיר את הפרמטר הזה, משתמשים בתת-הפרמטר from_field כדי לציין שדה שמוגדר בתצוגה של טבלה נגזרת מבוססת LookML (NDT) או שניתן לגשת אליו ב-Explore שאליו מצורפת טבלה נגזרת מבוססת LookML (NDT). בזמן הריצה, כל המסננים ב-from_field ב-Explore יועברו אל to_field בשאילתת המשנה של הטבלה נגזרת מבוססת LookML (NDT). דוגמה מופיעה בקטע שימוש ב-bind_filters.
ב-bind_filters, חשוב לשים לב לפרטים הבאים:
explore_source יכול לכלול את תת-הפרמטר bind_all_filters או את תת-הפרמטר bind_filters, אבל לא את שניהם.
|
bind_filters: {
to_field: users.created_date
from_field: user_dt.filter_date
} |
bind_all_filters |
מעביר את כל המסננים משאילתת ה-Explore לשאילתת המשנה של הטבלה הנגזרת מבוססת LookML (NDT). כדי להגדיר את הפרמטר הזה, מציינים את הערך bind_all_filters: yes בפרמטר explore_source של טבלה נגזרת מבוססת LookML (NDT). דוגמה מופיעה בקטע שימוש ב-bind_filters.
ב-bind_all_filters: yes, חשוב לשים לב לפרטים הבאים:
|
bind_all_filters: yes |
column |
מציינים עמודה שרוצים לכלול ב-explore_source. כולל תת-פרמטר field. |
column: cust_id {
field: orders.customer_id
} |
derived_column |
מציינת עמודה ב-explore_source עם ביטוי במרחב השמות של העמודות הפנימיות. אי אפשר להשתמש כאן בביטויי SQL מצטברים, כי אין קיבוץ SQL בשלב הזה. פונקציות חלון של SQL יכולות להיות שימושיות מאוד בפרמטר הזה. כולל תת-פרמטר sql. |
derived_column: average_order {
sql: order_amount / item_qty ;;
} |
dev_filters |
Added 21.12
מציין מסננים ש-Looker מחיל רק על גרסאות פיתוח של הטבלה הנגזרת. התכונה הזו שימושית למפתחי LookML כשהם בודקים טבלאות נגזרות במצב פיתוח. הפרמטר dev_filters מאפשר ל-Looker ליצור גרסאות קטנות ומסוננות של הטבלה, כך שמפתח LookML יכול לחזור על הפעולות ולבדוק את הטבלה בלי לחכות ליצירה של הטבלה המלאה אחרי כל שינוי. Looker מחיל את dev_filters רק על גרסאות הפיתוח של הטבלה הנגזרת, ולא על גרסת הייצור של הטבלה שהמשתמשים שולחים לה שאילתות. מידע נוסף על עבודה עם טבלאות נגזרות במצב פיתוח זמין בדף התיעוד בנושא טבלאות נגזרות ב-Looker. דוגמה מופיעה בקטע יצירת מסננים למצב פיתוח בדף הזה. |
dev_filters: [orders.created_date: "90 days", orders.products: "sweaters"] |
expression_custom_filter |
אפשר לציין ביטוי מסנן מותאם אישית בשאילתת explore_source. |
expression_custom_filter: ${orders.status} = "pending" ;; |
filters |
אפשר להוסיף מסנן לשאילתת explore_source. מקיפים בסוגריים מרובעים, כוללים את שם השדה לסינון בפורמט view_name.field_name, ואז מוסיפים : ואת הערכים שלפיהם השדה צריך להיות מסונן. המסננים מתווספים לתנאי WHERE של ה-SQL שנוצר על ידי הטבלה הנגזרת המקורית. |
filters: [products.department: "sweaters"] |
limit |
אפשרות אופציונלית שמציינת את מגבלת השורות של השאילתה. | limit: 10 |
sorts |
אפשר לציין מיון ל-explore_source הזה. מקיפים בסוגריים מרובעים, כוללים את שם השדה למיון בפורמט view_name.field_name, ואחריו : ו-asc או desc כדי לציין אם השדה צריך להיות ממוין בסדר עולה או בסדר יורד. אפשר למיין לפי כמה שדות על ידי הוספה של כמה זוגות של שם שדה ומילת מפתח, כשהם מופרדים בפסיקים. |
sorts: [products.brand: asc, products.name: asc] |
timezone |
מגדיר את אזור הזמן לשאילתת explore_source. בטבלאות נגזרות לא קבועות, מגדירים את אזור הזמן ל-"query_timezone" כדי להשתמש באופן אוטומטי באזור הזמן של השאילתה שמופעלת כרגע. אם לא מציינים אזור זמן, שאילתת explore_source לא תבצע המרה של אזור זמן, אלא תשתמש באזור הזמן של מסד הנתונים. רשימת אזורי הזמן הנתמכים מופיעה בדף ערכים של timezone. סביבת הפיתוח המשולבת מציעה הצעות אוטומטיות לערך של אזור הזמן כשמקלידים את הפרמטר timezone בסביבת הפיתוח המשולבת. בנוסף, רשימת הערכים הנתמכים של אזורי הזמן מוצגת ב-Quick Help panel (חלונית העזרה המהירה) של IDE. |
timezone: "America/Los_Angeles" |
דוגמאות
בהגדרות הבאות מופיעות דוגמאות בסיסיות לטבלאות נגזרות מותאמות.
יצירת טבלה נגזרת מבוססת LookML (NDT):user_order_facts
view: user_order_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: lifetime_number_of_orders {
field: order_items.order_count
}
column: lifetime_customer_value {
field: order_items.total_revenue
}
}
}
# Define the view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: lifetime_number_of_orders {
type: number
}
dimension: lifetime_customer_value {
type: number
}
}
אפשר להוסיף מסננים כדי ליצור user_90_day_facts טבלה נגזרת מבוססת LookML (NDT):
view: user_90_day_facts {
derived_table: {
explore_source: order_items {
column: user_id {
field: order_items.user_id
}
column: number_of_orders_90_day {
field: order_items.order_count
}
column: customer_value_90_day {
field: order_items.total_revenue
}
filters: [order_items.created_date: "90 days"]
}
}
# Add define view's fields as desired
dimension: user_id {
hidden: yes
}
dimension: number_of_orders_90_day {
type: number
}
dimension: customer_value_90_day {
type: number
}
}
יצירת מסננים למצב פיתוח
יש מצבים שבהם לוקח הרבה זמן ליצור את טבלת הנתונים הנגזרים מבוססת LookML (NDT) שאתם יוצרים, וזה יכול להיות בזבוז זמן אם אתם בודקים הרבה שינויים במצב פיתוח. במקרים כאלה, אפשר להשתמש ב-dev_filters כדי ליצור גרסאות פיתוח קטנות יותר של טבלה נגזרת מבוססת LookML (NDT):
view: e_faa_pdt {
derived_table: {
...
datagroup_trigger: e_faa_shared_datagroup
explore_source: flights {
dev_filters: [flights.event_date: "90 days"]
filters: [flights.event_date: "2 years", flights.airport_name: "Yucca Valley Airport"]
column: id {}
column: airport_name {}
column: event_date {}
}
}
...
}
בדוגמה הזו יש פרמטר dev_filters שמסנן את הנתונים ל-90 הימים האחרונים, ופרמטר filters שמסנן את הנתונים לשנתיים האחרונות ולנמל התעופה בעמק יוקה. הפרמטר dev_filters פועל בשילוב עם הפרמטר filters, כך שכל המסננים מוחלים על גרסת הפיתוח של הטבלה. אם גם dev_filters וגם filters מציינים מסננים לאותה עמודה, dev_filters מקבל עדיפות בגרסת הפיתוח של הטבלה. בדוגמה הזו, גרסת הפיתוח של הטבלה תסנן את הנתונים ל-90 הימים האחרונים עבור נמל התעופה של עמק יוקה.
אם בטבלה נגזרת מבוססת LookML (NDT) מופיע הפרמטר
חשוב לציין שגם המצב ההפוך נכון: אם יש לכם טבלת נתונים נגזרת מבוססת LookML (NDT) עם הפרמטרdev_filters, אי אפשר להשתמש בטבלת הפיתוח כגרסת הייצור, כי גרסת הפיתוח מכילה מערך נתונים מקוצר. במקרה כזה, אחרי שמסיימים לפתח את הטבלה ולפני שמפעילים את השינויים, אפשר להוסיף הערה לפרמטרdev_filtersואז להריץ שאילתה על הטבלה במצב פיתוח. לאחר מכן, Looker ייצור גרסה מלאה של הטבלה שאפשר להשתמש בה בסביבת הייצור כשפורסים את השינויים. במאמר טבלאות נגזרות ב-Looker מוסבר איך משתמשים בטבלאות פיתוח בייצור.dev_filtersואתם שולחים שאילתה לגביה במצב פיתוח, Looker יכול להשתמש בטבלת הייצור כדי לענות על השאילתה במצב פיתוח. ההצהרה הזו נכונה אלא אם משנים את ההגדרה של הטבלה ואז שולחים שאילתה לטבלה במצב פיתוח. במקרה כזה, Looker ייצור טבלת פיתוח כדי לענות על השאילתה.
העברת מסננים לטבלה נגזרת מבוססת LookML
כשכוללים טבלה נגזרת מבוססת LookML (NDT) ב-Explore, אפשר לקחת מסנני זמן ריצה מה-Explore ולהחיל אותם על השאילתה של הטבלה הנגזרת מבוססת LookML (NDT). כדי לעשות זאת, מוסיפים את הפרמטר bind_all_filters או את הפרמטר bind_filters ל-explore_source של טבלה נגזרת מבוססת LookML (NDT).
כשמעבירים מסנני זמן ריצה מ-Explore ל-subquery של טבלה נגזרת מבוססת LookML (NDT), מסנן זמן הריצה צריך להיות בתצוגה שמצורפת לאותו Explore כמו הטבלה הנגזרת מבוססת LookML (NDT). בנוסף, מכיוון שהטבלה הנגזרת מבוססת LookML צריכה להיווצר מחדש בזמן הריצה כדי לשלב את מסנני זמן הריצה מהניתוח, הטבלה הנגזרת מבוססת LookML לא יכולה להיות טבלה נגזרת מתמידה (PDT).
שימוש ב-bind_all_filters
הדרך הקלה ביותר להעביר מסננים מ-Explore לשאילתת משנה של טבלה נגזרת מבוססת LookML (NDT) מקורית היא לציין bind_all_filters: yes בפרמטר explore_source של טבלה נגזרת מבוססת LookML (NDT) מקורית. הפעולה הזו תעביר את כל המסננים של זמן הריצה של Explore אל שאילתת המשנה של הטבלה נגזרת מבוססת LookML (NDT).
צריך לצרף טבלה נגזרת מבוססת LookML עם bind_all_filters: yes לאותו כלי ניתוח נתונים שצוין בפרמטר explore_source של הטבלה הנגזרת מבוססת LookML. אם רוצים להשתמש בטבלה נגזרת מבוססת LookML (NDT) בדוח ניתוח אחר, צריך להשתמש בפרמטר bind_filters, כמו שמתואר בקטע שימוש בפרמטר bind_filters.
LookML של טבלה נגזרת מבוססת LookML עם bind_all_filters: yes:
view: top_10_simple_item_names {
view_label: "Top 10s"
derived_table: {
explore_source: order_items {
column: total_sale_price {
field: order_items.total_sale_price
}
column: item_name {
field: products.item_name
}
derived_column: rank {
sql: RANK() OVER (ORDER BY total_sale_price DESC) ;;
}
bind_all_filters: yes
sorts: [order_items.total_sale_price: desc]
timezone: "query_timezone"
limit: 10
}
}
dimension: item_name {
group_label: "Simple Example"
}
dimension: rank {
type: number
group_label: "Simple Example"
}
dimension: item_name_ranked {
group_label: "Simple Example"
order_by_field: rank
type: string
sql: ${rank} || ') ' || ${item_name} ;;
}
}
בתצוגה של הטבלה הנגזרת מבוססת LookML, הערך של explore_source הוא order_items. הקוד הבא הוא LookML של order_items Explore שבו הטבלה נגזרת מבוססת LookML (NDT) מצורפת ל-Explore:
explore: order_items {
...
join: top_10_simple_item_names {
type: inner
relationship: many_to_one
sql_on: ${products.item_name} = ${top_10_simple_item_names.item_name} ;;
}
}
כדי לראות את הדוגמה הזו בפעולה, אפשר לעיין בפוסט לקהילה [Analytic Block] – Pivot by Top X – Introducing bind_all_filters: yes.
שימוש ב-bind_filters
תת-הפרמטר bind_filters של explore_source מעביר מסנן ספציפי משאילתת ה-Explore לשאילתת המשנה של טבלה נגזרת מבוססת LookML (NDT):
-
to_fieldהוא השדה בטבלה הנגזרת מבוססת LookML שאליה מוחל המסנן. הערךto_fieldחייב להיות שדה מתוךexplore_sourceהבסיסי. - המספר
from_fieldמציין את השדה בניתוח שממנו יתקבל המסנן, אם המשתמש יציין מסנן בזמן הריצה.
בזמן הריצה, כל המסננים ב-from_field ב-Explore יועברו אל to_field בשאילתת המשנה של הטבלה נגזרת מבוססת LookML (NDT).
קוד ה-LookML הבא מציג טבלה נגזרת מבוססת LookML עם bind_filters. במסגרת ההגדרה הזו, Looker ייקח כל מסנן שמוחל על השדה filtered_lookml_dt.filter_date ב-Explore ויחיל את המסנן על השדה users.created_date בטבלה נגזרת מבוססת LookML (NDT).
derived_table: {
explore_source: order_items {
bind_filters: {
to_field: users.created_date
from_field: filtered_lookml_dt.filter_date
. . .
}
}
}
דברים שכדאי לקחת בחשבון
שימוש רק בפרמטר explore_source אחד
כל טבלה נגזרת מבוססת LookML (NDT) מקבלת רק פרמטר explore_source אחד. פרמטרים של explore_source שמופיעים בהמשך לא יגרמו לשגיאות אימות של LookML, אבל הם יחליפו פרמטרים קודמים של explore_source.
כדי ליצור עמודות משדות בתצוגות שונות, קודם צריך לצרף את התצוגות השונות באותו ניתוח. ואז משתמשים ב-Explore עבור explore_source.
שימוש בהצהרות include כדי להפנות לשדות
כשיוצרים טבלה נגזרת מבוססת LookML (NDT), צריך לכלול את הקובץ שמכיל את ההגדרה של Explore. הדרך הכי טובה לעשות את זה היא להגדיר את ה-Explore בקובץ Explore נפרד, כמו שמתואר במסמכי התיעוד בנושא יצירת קובצי Explore.
אם יוצרים קובץ Explore נפרד:
- קובץ התצוגה של טבלת הנתונים הנגזרת המקורית צריך לכלול את הקובץ של כלי הניתוח. לדוגמה:
-
include: "/explores/order_items.explore.lkml"
-
- קובץ ה-Explore צריך לכלול את קובצי התצוגה שהוא צריך. לדוגמה:
-
include: "/views/order_items.view.lkml" -
include: "/views/users.view.lkml"
-
- המודל צריך לכלול את קובץ הניתוח. לדוגמה:
-
include: "/explores/order_items.explore.lkml"
-