用量
view: view_name {
dimension: field_name {
primary_key: yes
}
}
|
階層
primary_key |
可能的欄位類型
維度
接受
布林值 (是或否)
|
定義
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) 來產生專屬 ID。舉例來說,下列衍生資料表會使用資料表的列號做為主鍵:
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 ;;
}
}