Usage
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
היררכיה
primary_key |
סוגי שדות אפשריים
מאפיין
מקבל
ערך בוליאני (yes או no)
|
הגדרה
הפרמטר primary_key מציין שמאפיין הוא המפתח הראשי של התצוגה שלו. ערך ברירת המחדל הוא false. לדוגמה:
dimension: id {
primary_key: yes
sql: ${TABLE}.id ;;
}
הפרמטר primary_key כולל את המאפיינים הבאים:
- התכונה עוזרת ל-Looker להימנע מסעיפי
GROUP BYמיותרים. - הפרמטר הזה נדרש כדי שהפרמטר
foreign_keyיפעל בצורה תקינה. - התג נדרש כדי שצבירות סימטריות יפעלו בצורה תקינה. כשמצטרפים לתצוגות עם מדדים (צבירות), צריך להגדיר
primary_keyבכל צד של ההצטרפות כדי לחשב את הצבירות בצורה נכונה.
הפרמטר primary_key מוגבל באופן הבא:
- אי אפשר להוסיף את הפרמטר הזה ליותר משדה אחד בכל תצוגה מפורטת.
- לא ניתן להוסיף פרמטר זה ל-
dimension_groupשמציין יותר מאחדtimeframe.
יצירת מפתח ראשי מורכב
אם יש לכם מפתח ראשי שמורכב מכמה עמודות, אתם יכולים ליצור מאפיין שמשרשר את העמודות האלה, ואז להגדיר אותו כמפתח הראשי. לדוגמה:
dimension: primary_key {
primary_key: yes
sql: CONCAT(${TABLE}.promotion_id, ${TABLE}.sku) ;;
}
CONCATפועל בחלק ממסדי הנתונים, כמו MySQL, אבל יכול להיות שבמסדי נתונים אחרים יש פונקציה מקבילה שונה. לדוגמה, ב-Redshift, האופרטור לשרשור הוא||.
שימוש בטבלה נגזרת מתמשכת (PDT) כדי ליצור מפתח ראשי
במקרים שבהם אין דרך סבירה לזהות שורה ייחודית כמפתח ראשי, אפשר ליצור טבלת נתונים נגזרת קבועה (PDT) כדי ליצור מזהה ייחודי. לדוגמה, בטבלה הנגזרת הבאה נעשה שימוש במספר השורה של הטבלה כמפתח ראשי:
view: transaction {
# sql_table_name: warehouse.transaction
derived_table: {
sql: SELECT ROW_NUMBER as transaction_pk, * FROM warehouse.transaction ;;
sql_trigger_value: SELECT CURRENT_DATE ;;
indexes: [customer_id, product_id, salesperson_id, transaction_date]
}
dimension: transaction_pk {
type: number
primary_key: yes
hidden: yes
sql: ${TABLE}.transaction_pk ;;
...
}
}
הגדרת מפתח ראשי חדש בתצוגה מורחבת
אם משתמשים בפרמטר extends כדי להרחיב תצוגה, המפתח הראשי מהתצוגה הבסיסית יורחב לתצוגה החדשה.
כדי לשנות את המפתח הראשי למאפיין חדש, מוסיפים primary_key: no להגדרת המאפיין המקורי בתצוגה החדשה, ומוסיפים primary_key: yes להגדרת המאפיין החדש בתצוגה החדשה.
view: base {
dimension: old_primary_key {
primary_key: yes
sql: ${TABLE}.id ;;
}
}
view: new {
extends: base
dimension: old_primary_key {
primary_key: no
}
dimension: new_primary_key {
primary_key: yes
sql: ${TABLE}.new_id ;;
}
}