primary_key

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 ;;
  }
}