为什么我的测量结果无法通过联接获得?

您在某个视图中定义了一些指标,但将该视图联接到另一个视图后,您在探索中便看不到这些指标。这些措施去了哪里?

可能的原因和解决方案

可能的根本原因可能取决于您是否启用了对称汇总。系统会自动启用对称汇总,除非开发者使用 symmetric_aggregates: no LookML 设置停用了对称汇总,或者您的数据库方言不支持对称汇总

启用对称汇总后

借助对称汇总,所有类型的测量值都可以在联接中传递。不过,只有在联接的两侧视图中定义了主键时,才能执行此操作。若要让测量值在联接中传递,您需要在所有相关视图中定义主键。

您可以通过向主键字段定义添加 primary_key: yes,在每个视图中定义主键,如下所示:

dimension: id {
 type: number
 primary_key: yes
}

主键必须具有完全唯一的非 NULL 值,才能将衡量标准类型 sumaverage 的值传递到联接。如果主键不唯一,您可能会收到如下错误:

Non-Unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum.

此外,如果您的视图中没有单个唯一字段,您可以通过在 SQL 中将两个或更多字段串联起来来创建一个复合主键,以便创建唯一的值组合。如需详细了解如何解决此错误,请参阅 Error: Non-Unique value/primary key (or sql_distinct_key), value overflow or collision when computing sum“最佳实践”页面的非唯一主键部分

未启用对称汇总时

某些方言不支持对称汇总,或者您的 Looker 开发者已通过 symmetric_aggregates: no LookML 设置停用了对称汇总。当无法使用对称汇总时,Looker 默认只会通过联接传递 count 类型的测量(这些测量会转换为不重复计数测量)。这种方法也需要主键,因为 count distinct 将使用主键。这样可以防止出现不准确的结果和扇出。请参阅有关聚合函数出错的社区帖子。

最新版 Looker 中有一个列表,显示了哪些方言支持对称汇总

其他可考虑的解决方案

  • 在联接级别使用 fields(用于联接)。借助 fields,您可以指定要显示在“探索”中的联接视图中的哪些字段(指标、维度)。
  • 选择正确的 relationship 参数relationship 参数用于告知 Looker 在 SQL 查询中使用联接时是否应用对称汇总。请务必正确定义关系类型,以便 Looker 计算准确的衡量值。