用量
视图:view_name {
dimension: field_name {
primary_key: yes
}
}
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
以正确计算汇总。 - 不能是指定了多个
timeframe
的dimension_group
。
创建复合主键
如果主键由多个列组成,您可以创建一个将这些列串联的维度,然后将其声明为主键。例如:
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 ;;
...
}
}