explore_source

בדף הזה מתייחסים לפרמטר 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 כמו טבלה נגזרת מבוססת LookML ‏(NDT).
  • אי אפשר להפוך את הטבלה הנגזרת מבוססת LookML לטבלה נגזרת מתמידה (PDT).

הפרמטר 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, חשוב לשים לב לפרטים הבאים:
  • מסנן זמן הריצה צריך להיות בתצוגה שמצורפת לאותו Explore כמו טבלה נגזרת מבוססת LookML ‏(NDT).
  • אי אפשר להפוך את הטבלה הנגזרת מבוססת LookML ‏(NDT) לPDT.
  • אפשר להצטרף לטבלה נגזרת מבוססת LookML ‏(NDT) רק ל-Explore שצוין בפרמטר explore_source של הטבלה הנגזרת מבוססת LookML ‏(NDT). הסיבה לכך היא ש-bind_all_filters צריך למפות את השדות המסוננים של Explore לשדות בטבלה נגזרת מבוססת LookML ‏(NDT).
  • הפרמטר explore_source יכול לכלול את תת-הפרמטר bind_all_filters או את תת-הפרמטר bind_filters, אבל לא את שניהם.
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) מופיע הפרמטר dev_filters, אי אפשר להשתמש בטבלת הפיתוח כגרסת הייצור, כי גרסת הפיתוח מכילה מערך נתונים מקוצר. במקרה כזה, אחרי שמסיימים לפתח את הטבלה ולפני שמפעילים את השינויים, אפשר להוסיף הערה לפרמטר dev_filters ואז להריץ שאילתה על הטבלה במצב פיתוח. לאחר מכן, Looker ייצור גרסה מלאה של הטבלה שאפשר להשתמש בה בסביבת הייצור כשפורסים את השינויים. במאמר טבלאות נגזרות ב-Looker מוסבר איך משתמשים בטבלאות פיתוח בייצור.

חשוב לציין שגם המצב ההפוך נכון: אם יש לכם טבלת נתונים נגזרת מבוססת LookML ‏(NDT) עם הפרמטר 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"