您在某个视图中定义了一些指标,但将该视图联接到另一个视图后,您在探索中便看不到这些指标。这些措施去了哪里?
可能的原因和解决方案
可能的根本原因可能取决于您是否启用了对称汇总。系统会自动启用对称汇总,除非开发者使用 symmetric_aggregates: no
LookML 设置停用了对称汇总,或者您的数据库方言不支持对称汇总。
启用对称汇总后
借助对称汇总,所有类型的测量值都可以在联接中传递。不过,只有在联接的两侧视图中定义了主键时,才能执行此操作。若要让测量值在联接中传递,您需要在所有相关视图中定义主键。
您可以通过向主键字段定义添加 primary_key: yes
,在每个视图中定义主键,如下所示:
dimension: id { type: number primary_key: yes }
主键必须具有完全唯一的非 NULL
值,才能将衡量标准类型 sum
和 average
的值传递到联接。如果主键不唯一,您可能会收到如下错误:
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 计算准确的衡量值。