בדף הזה אנחנו מתייחסים לפרמטר
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 (NDT), אילו מסננים יוחלו על טבלה נגזרת מבוססת LookML (NDT), אם להגביל או למיין את השורות בטבלה נגזרת מבוססת LookML (NDT), ואם להמיר את השדות מבוססי-הזמן של טבלה נגזרת מבוססת LookML (NDT) לאזור זמן אחר.
הגדרת טבלה נגזרת מבוססת 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 שנוצר על ידי טבלה נגזרת מבוססת LookML (NDT). |
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 בסביבת הפיתוח המשולבת. בנוסף, בסביבת הפיתוח המשולבת מוצגת רשימה של ערכי אזורי הזמן הנתמכים בחלונית העזרה המהירה. |
timezone: "America/Los_Angeles" |
דוגמאות
בהגדרות הבאות מופיעות דוגמאות בסיסיות לטבלאות נגזרות מותאמות.
יצירת טבלה נגזרת מבוססת user_order_facts LookML (NDT):
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). בנוסף, מכיוון שהטבלה הנגזרת המקורית צריכה להיווצר מחדש בזמן הריצה כדי לשלב את המסננים של זמן הריצה מתוך הניתוח, הטבלה הנגזרת המקורית לא יכולה להיות טבלה נגזרת מתמידה (PDT).
שימוש ב-bind_all_filters
הדרך הקלה ביותר להעביר מסננים מ-Explore לשאילתת משנה של טבלה נגזרת מבוססת LookML (NDT) היא לציין bind_all_filters: yes בפרמטר explore_source של טבלה נגזרת מבוססת LookML (NDT). הפעולה הזו תעביר את כל המסננים של זמן הריצה של Explore אל שאילתת המשנה של הטבלה הנגזרת מבוססת LookML (NDT).
צריך לצרף טבלה נגזרת מבוססת LookML (NDT) עם bind_all_filters: yes לאותו Explore שצוין בפרמטר explore_source של טבלה נגזרת מבוססת LookML (NDT). אם רוצים להשתמש בטבלה נגזרת מבוססת LookML (NDT) ב-Explore אחר, צריך להשתמש בפרמטר 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"
-