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

您在某个视图中定义了一些衡量指标,但当您将该视图与其他视图联接时,您在探索中不再看到这些衡量指标。措施去哪儿了?

可能的原因和解决方案

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

启用对称聚合时

对称汇总可让所有类型的度量在联接中保持不变。不过,只有在联接两侧的视图中都定义了主键时,才能实现这一点。如需使度量在联接中保持不变,您需要在所有相关视图中定义主键。

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

dimension: id {
 type: number
 primary_key: yes
}

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

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 计算准确的度量值。