autogenerate_primary_keys

用法

  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 就不会为该视图生成主键。

示例

以下是一个联接了 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 会自动为 ordersorder_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 之前的版本