您在某个视图中定义了一些指标,但当您将该视图与其他视图联接时,您在探索中不再看到这些指标。措施去哪儿了?
可能的原因和解决方案
可能的基础原因取决于您是否启用了对称聚合。除非开发者使用 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 计算准确的衡量值。