foreign_key

Usage

explore: view_name_1 {
  join: view_name_2 {
    foreign_key: dimension_name
  }
}
היררכיה
foreign_key
ערך ברירת המחדל
ללא

מקבל
שם של מאפיין ב-Looker

כללים מיוחדים
  • בשדה הזה צריך להזין שם של מאפיין, ולא שם של עמודה מהטבלה הבסיסית (למרות שלפעמים הם זהים)
  • יכול להיות שלא תוכלו להשתמש ב-foreign_key, ב-sql_foreign_key וב-sql_on בו-זמנית באותו join
  • חייבים להגדיר בדיוק אחד מהמאפיינים בתצוגה המאוחדת כמפתח הראשי של התצוגה באמצעות הפרמטר primary_key

הגדרה

foreign_key יוצר קשר של צירוף בין תצוגה לבין ה-Explore שלה. ‫Looker מתאים את המאפיין שאליו מתייחס foreign_key למפתח הראשי של התצוגה המצורפת. כדי להגדיר את המפתח הראשי של התצוגה המאוחדת, מפעילים את האפשרות primary_key בשדה שמשמש כמפתח הראשי.

אפשר לצרף תצוגה ישירות ל-Explore כשמשתמשים ב-foreign_key, או לצרף אותה דרך תצוגה שנייה שכבר צורפה ל-Explore הזה.

דוגמה למקרה הראשון, שבו תצוגה מצורפת ישירות ל-Explore:

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

בהנחה שהמפתח הראשי של customer נקרא id, ה-SQL שנוצר ב-Looker יהיה:

SELECT    ...
FROM      order
LEFT JOIN customer
ON        order.customer_id = customer.id

במקרה השני, תצוגה מצורפת ל-Explore דרך תצוגת ביניים שכבר מצורפת ל-Explore הזה. לדוגמה:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

במקרה הזה, אי אפשר לצרף את customer ישירות אל order_items. במקום זאת, צריך להצטרף אליו דרך order. בהנחה שהמפתחות הראשיים של order ושל customer נקראו id, קוד ה-SQL ש-Looker יצר יהיה:

SELECT    ...
FROM      order_items
LEFT JOIN order
ON        order_items.order_id = order.id
LEFT JOIN customer
ON        order.customer_id = customer.id

כדי שהפעולה הזו תתבצע בצורה תקינה, השתמשנו בהפניה לשדה עם היקף מלא order.customer_id כשביצענו הצטרפות ל-customer, במקום להשתמש רק ב-customer_id. אם היינו משתמשים רק ב-customer_id, ‏ Looker היה מנסה לצרף את customer ישירות ל-order_items.customer_id במקום דרך order.customer_id.

דוגמאות

מצטרפים לתצוגה בשם customer לניתוח בשם order על ידי התאמת המפתח הראשי מ-customer ל-order.customer_id:

explore: order {
  join: customer {
    foreign_key: customer_id
  }
}

מצטרפים לתצוגה שנקראת customer לניתוח שנקרא order_items דרך התצוגה שנקראת order. מתאימים את המפתח הראשי מ-customer ל-order.customer_id, ואת המפתח הראשי מ-order ל-order_items.order_id:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: customer {
    foreign_key: order.customer_id
  }
}

מצטרפים לתצוגות המפורטות שנקראות order ו-inventory_item ב-Explore שנקרא order_items. מתאימים את המפתח הראשי מ-order ל-order_items.order_id, ואת המפתח הראשי מ-inventory_item ל-order_items.inventory_id:

explore: order_items {
  join: order {
    foreign_key: order_id
  }
  join: inventory_item {
    foreign_key: inventory_id
  }
}

אתגרים נפוצים

השדה foreign_key חייב להפנות לשם של מאפיין, ולא לשם של עמודה

הפרמטר foreign_key מקבל רק שם של מימד, ולא את שם העמודה במסד הנתונים הבסיסי של SQL. לעתים קרובות שם המאפיין ושם העמודה זהים, מה שעלול להוביל למסקנה השגויה שאפשר להשתמש בשמות העמודות.

חובה להגדיר מפתח ראשי בתצוגות שהצטרפו באמצעות foreign_key

כדי ש-foreign_key יפעל בצורה תקינה, אחד מהמאפיינים בתצוגה המאוחדת צריך להיות מוגדר כמפתח הראשי של התצוגה הזו. מגדירים מפתח ראשי באמצעות הפרמטר primary_key.

אפשר להגדיר רק מאפיין אחד כמפתח ראשי, ולכן אי אפשר להשתמש ב-foreign_key בתצוגות שיש להן מפתח ראשי עם כמה עמודות. במקרה כזה, תצטרכו להשתמש ב-sql_on במקום זאת.

חשוב לדעת

foreign_key היא לא הדרך היחידה להצטרף ב-Looker

אי אפשר ליצור חלק מיחסי הצירוף באמצעות foreign_key. לדוגמה, יכול להיות שההצטרפות לא תשתמש במפתח הראשי של התצוגה המצורפת, או שהיא תדרוש שחלק מההצטרפות יהיו מספר תנאים. במקרים כאלה, צריך להשתמש ב-sql_on במקום זאת.