用法
autogenerate_primary_keys: yes
|
层次结构
autogenerate_primary_keys- 或 - autogenerate_primary_keys |
默认值
否
特殊规则
|
定义
启用 autogenerate_primary_keys 参数后,如果 LookML 中未明确定义视图的键,Looker 会为该视图生成一个临时且唯一的键。借助自动生成的主键,系统可以正确计算对称聚合和一对多计数,而无需更改底层数据库表。主键是在查询运行时生成的,不会在查询之间保留。
autogenerate_primary_keys 参数同时适用于视图和探索:
- 对于视图,如果您使用
autogenerate_primary_keys: yes定义视图,Looker 会为需要主键的视图查询生成主键,以避免重复的行。如果您向已将某个字段定义为主键的视图添加autogenerate_primary_keys: yes,Looker IDE 会显示 LookML 验证警告。 对于 Explore,如果您使用
autogenerate_primary_keys: yes定义 Explore,Looker 会为每个 Explore 视图生成主键,以满足 Explore 查询的要求,避免出现重复的行:- Looker 仅为探索中没有使用
primary_key: yes定义字段的视图生成主键。如果视图具有使用primary_key: yes定义的字段,Looker 会使用该视图的主键。 - 只有在通过某个探索查询视图时,Looker 才会为该探索的视图生成主键。如果通过未定义
autogenerate_primary_keys: yes的其他探索查询同一视图,并且该视图本身也未定义autogenerate_primary_keys: yes,Looker 就不会为该视图生成主键。
- Looker 仅为探索中没有使用
示例
以下是一个联接了 order_items 视图的 orders 探索。“探索”的定义为 autogenerate_primary_keys: yes:
explore: orders {
autogenerate_primary_keys: yes
join: order_items {
sql_on: ${orders.id} = ${order_items.order_id} ;;
relationship: one_to_many
}
}
对于 orders 探索中的查询,如果需要对称聚合或计算(视图中的行可能会重复),Looker 会自动为 orders 或 order_items 视图生成不同的键。
注意事项
请注意以下有关使用 autogenerate_primary_keys: yes 的事项:
- 启用
autogenerate_primary_keys可能会改变现有查询的行为。之前因缺少主键而必须从查询中舍弃的指标现在将包含在结果中,这可能会对某些报告造成重大变更。 - 由于需要额外的计算,自动生成主键可能会增加查询时间。
- 当 Looker 为查询生成主键时,该主键是一个临时运行时主键,无法在探索中选择或可视化。
针对 autogenerate_primary_keys 的方言支持
能否使用 autogenerate_primary_keys 取决于 Looker 连接所使用的数据库方言。在最新版 Looker 中,以下方言支持 autogenerate_primary_keys:
- Google BigQuery 标准 SQL
- Amazon Redshift
- Amazon Redshift 2.1 及更高版本
- Amazon Redshift Serverless 2.1 及更高版本
- Google Cloud PostgreSQL
- Greenplum
- Microsoft Azure PostgreSQL
- MySQL 8.0.12 及更高版本
- PostgreSQL 9.5 之前的版本