Usage
explore: view_name_1 {
join: view_name_2 { ... }
join: view_name_3 {
required_joins: [view_name_2, ...]
}
}
|
היררכיה
required_joins |
ערך ברירת המחדל
ללא
מקבל
סוגריים מרובעים שמכילים רשימה מופרדת בפסיקים של הצטרפויות לניתוח הזה
כללים מיוחדים
כדי שאפשר יהיה להפנות לתצוגה ב-required_joins, צריך לצרף אותה לניתוח ב-Explore.
|
הגדרה
required_joins מכריח לכלול joins אחד או יותר ב-SQL שנוצר על ידי Looker, גם אם המשתמש לא בחר שדה מהתצוגה המצורפת הזו. ההתנהגות הזו מופעלת בכל פעם שהמשתמש בוחר שדה מתצוגה קשורה שאתם מציינים. יכול להיות שיהיה צורך בכמה הצטרפויות, באמצעות רשימה מופרדת בפסיקים כמו [join_name_a, join_name_b, ...].
כש-Looker יוצר SQL לשאילתה, הוא מנסה ליצור את ה-SQL הכי נקי שאפשר, וישתמש רק בצירופים שנדרשים לשדות שהמשתמש בוחר. בדוגמה של דיאגרמת התחביר בחלק העליון של הדף הזה:
- אם משתמש בחר רק שדה מ-
view_name_2, זו תהיה התצוגה היחידה שמצורפת לניתוח. - אם משתמש בוחר שדה מ-
view_name_3, הפרמטרrequired_joinsשל הצירוף הזה גורם לצירוף שלview_name_2לניתוח.
תרחישי השימוש העיקריים ב-required_joins:
סגנון תחביר ישן עם sql_on
לא צריך להשתמש ב-required_joins עם sql_on כשמשתמשים בתחביר ${view_name.looker_dimension_name}. עם זאת, יש מודלים ישנים יותר שעדיין משתמשים בתחביר view_name.native_column_name. לדוגמה:
explore: order_items {
join: order {
sql_on: order_items.order_id = order.id ;;
}
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
בדוגמה הזו, בכל פעם שמשתמש בוחר שדה מ-customer, צריך לצרף גם את התצוגה order כדי לשמור על יחס הצירוף הנכון. אם שכחתם לדרוש את השאילתות האלה, יכול להיות שהן עדיין יפעלו אם המשתמש יבחר שדות מכל התצוגות הנדרשות. עם זאת, יכול להיות ששאילתות אחרות יחזירו נתונים שגויים בלי להציג הודעה על כך, בגלל האיחוד השגוי.
במקום להשתמש ב-required_joins, כדאי לשנות את המודל כך שישתמש בתחביר ${view_name.looker_dimension_name}.
צריך או רוצה לכתוב SQL גולמי
יש מקרים שבהם אי אפשר או לא רוצים להשתמש בתחביר ${view_name.looker_dimension_name} עם sql_on. בדרך כלל זה קורה כי רוצים להשתמש בערכים הגולמיים במסד הנתונים, ולהימנע מהמרות או משינויים אחרים שמתרחשים באמצעות התחביר ${view_name.looker_dimension_name}. דוגמה לשימוש:
explore: order {
join: user {
sql_on: ${order.user_id} = ${user.id} ;;
}
join: pre_sign_up_events {
from: event
sql_on:
${event.user_id} = ${user.id} AND
event.date BETWEEN user.creation_date AND user.sign_up_date ;;
required_joins: [user]
relationship: one_to_many
}
}
בדוגמה הזו, הצטרפות pre_sign_up_events מסתמכת על תאריכים מ-user. לכן חשוב לוודא ש-user מצטרף באמצעות required_joins.
במקום להשתמש ב-required_joins כדי להימנע מהמרת נתונים בשדות של שעה או תאריך, כדאי להשתמש בסוג date_raw ולהימנע משימוש ב-required_joins.
אתגרים נפוצים
כדי שאפשר יהיה להפנות לתצוגה ב-required_joins, צריך לצרף אותה לניתוח ב-Explore.
כדי להציב תצוגה ב-required_joins, צריך לוודא שהיא מצורפת ל-explore שבו נעשה שימוש ב-required_joins. לדוגמה, הפעולה הבאה לא תעבוד:
explore: order_items {
join: customer {
sql_on: order.customer_id = customer.id ;;
required_joins: [order]
}
}
החשבון order לא הצטרף ל-order_items, ולכן הוא לא זמין לשימוש ב-required_joins.