优阅达 | Tableau 微课堂(94): 嵌套 LOD 表达式

published: 2023-05-08

嵌套 LOD 表达式

本期旨在对 LOD 表达式的某些更深层次进行概念上的解释。要学习基础知识,请观看见有关 LOD 表达式的微课堂视频介绍。

嵌套 LOD 表达式

某些业务问题可能分析起来非常复杂,而嵌套 LOD 表达式可以帮助解决这些复杂的场景。
要理解嵌套 LOD 表达式的行为方式,就得先了解它们的计算逻辑,这尤为重要。例如,如果想要计算有多少客户下了特定数量的订单,并求出平均订单数量,该怎么处理呢?

如果拖出一条平均线,Tableau 会根据横轴上的数值来计算并显示平均线。这真的是我们想要的结果吗?

按照这个方法求平均值,其实是将视图中订单数累加后除以订单总计数,而非依据每个客户创建的订单数来求值。

更确切地说,视图中有 10 个客户只下了 1 个订单,117 个客户下了 6 个订单,我们应该是希望得到所有客户的平均订单数量。

嵌套 LOD 表达式可以帮助我们做到这一点。先通过下图中的FIXED 详细级别表达式求出每个客户的订单数量。

然后求平均值。之后再通过第 2 个 FIXED 详细级别表达式在表范围(即在所有客户中)内取值。

请注意,这样求出来的平均值要小一些,因为综合考虑了订单较少的客户的数量。

嵌套表达式的上下文

下面,我们来详细讨论一下嵌套 LOD 表达式的上下文。嵌套计算从外部计算继承维度。也就是说,内部计算的上下文由其父计算定义,而不是由工作表定义。

这里有两个嵌套的 LOD 表达式,它们都将产生相同的结果。为什么?

因为第一个示例中的嵌套表达式继承了外部计算的维度。也就是说,Country(国家)中包含了 Customer ID(客户ID)。这与最初在客户 ID 和国家级别进行 FIXED 的计算是一样的,然后两者求出的平均值都是 FIXED 在国家级别上的。

嵌套 LOD 表达式的聚合和复制行为遵循与 FIXED 相同的规则。复制(或聚合)是为了匹配父维度。

如果内部计算比外部计算聚合得更多,则将内部结果复制到外部计算中。如果内部计算比外部计算粒度更细,则通过外部计算聚合结果。

在这种情况下,外部的 LOD 具有比内部产生更细粒度的聚合,因此将结果从内部复制到外部,然后将整个结果聚合到视图级别的 LOD 中,从而产生最终的结果。

本节 Tableau 微课堂到此结束,感谢你的耐心阅读。

下节课,我将带你学习了解 如何集成 Tableau 和 R。