您在某个视图中定义了一些衡量指标,但当您将该视图与其他视图联接时,您在探索中不再看到这些衡量指标。措施去哪儿了?
可能的原因和解决方案
可能的基础原因取决于您是否启用了对称汇总。除非开发者使用 symmetric_aggregates: no
LookML 设置停用了对称聚合,或者您的数据库方言不支持对称聚合,否则系统会自动启用对称聚合。
启用对称聚合时
对称汇总可让所有类型的度量在联接中保持不变。不过,只有在联接两侧的视图中都定义了主键时,才能实现这一点。如需使度量在联接中保持不变,您需要在所有相关视图中定义主键。
您可以在每个视图中添加 primary_key: yes
来定义主键,如下所示:主键字段定义:
dimension: id { type: number primary_key: yes }
对于衡量类型 sum
和 average
,主键必须具有完全唯一的非 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 计算准确的度量值。