Tableau:详细级别表达式(LOD表达式)

在Tableau中,除了有行级别表达式(也叫数据源级)和视图级别表达式(也叫可视化级别)之外,还有详细级别表达式。行级别表达式和视图级别表达式的计算粒度都是确定的。行级别表达式只能在数据源中的每一行上引用非聚合的计算;而视图级别表达式只能在视图功能区定义的维度上对数据源中的数据进行聚合。而详细级别表达式可以跳出这两个限制,在更精细或更粗略,甚至固定维度上进行聚合。

另外,行级别表达式和视图级别表达式会在数据源中增加相应的数据,而详细级别表达式不会产生对应的数据。

Tableau中的详细级别表达式主要包括三种:Include型表达式、Exclude型表达式和Fixed型表达式。以下仍然以Tableau中的【超市】数据为例。

1.Include型详细表达式

Include型表达式是指除了视图级别表达式指定的维度外,还可以在更精细的维度上进行计算。但是这个更精细的计算的值并不会显示出来。假设创建如下的Include型表达式【每个客户的销售额】和视图级别表达式【客户平均销售额】:

之后将【地区】拖拽到【行】中,将上述两个表达式拖拽道【列】中,并将【每个客户的销售额】的度量设为平均值。然后以“文本表”的形式展示数据,结果如下:

从上述结果可以发现,这两个计算字段的结果是一样的。基于这个结果可以推断出:当把【地区】拖拽到视图去之后,【每个客户的销售额】这个计算字段已经将每个【地区】中的数据按照【客户 ID】对每个客户的销售额进行了汇总处理(虽然这一层中间结果没有显示出来)。之后将【每个客户的销售额】改为“均值”度量后会直接在这些汇总后得到的结果上进行计算。

在上述Include型表达式中,【客户 ID】已经是数据源中相当精细的维度了。而当Include型表达式中涉及到的维度高于视图级别表达式中的维度时,Include型表达式已经失效了。假设现有如下Include型表达式:

将【子类别】拖拽到【列】中,将【每个类别的销售额】和【销售额】拖拽到【行】中,仍然以‘文本表’的形式显示结果,具体如下:

从以上结果可以看出,这两个字段的输出结果是相同的,这个时候Include型表达式已经没有意义了,数据并没有按照【类别】进行汇总。这也是Include型和Fixed型的不同的一点。所以,Include型表达式的详细级别只能比视图级别更精细或者相同。

2. Exclude型详细表达式

Exclude型表达中指定的维度会从视图级别表达式中的维度上剔除。先来看看各个【地区】的总【销售额】,其结果如下:

创建Exclude型表达式【忽略类别销售额】,具体如下:

将【地区】及【类别】拖拽到【行】中,将【忽略类别销售额】拖拽到【列】及【标签】中,以“条形图”的形式展示,具体结果如下:

我们可以发现,上述每个【地区】每个【类别】的销售额与每个【地区】的总【销售额】的结果是一样的,这就是Exclude型相详细级别表达式。另外,还有一个问题,点击【列】中的【忽略类别销售额】可以发现其使用的聚合函数为ATTR,这主要是因为忽略一个聚合维度一定会产生重复值,用ATTR来指明实际上未发生聚合。

同时,如果在视图级别表达式中并未出现Exclude型表达式中指定的排除维度,或者视图级别表达式中有比Exclude型表达式中指定的维度更精细的维度时,Exclude型表达式失效。

3. Fixed型表达式

Fixed型表达式会忽略视图级别表达中指定的所有维度,只遵照Fixed型表达式中指定的维度进行聚合。使用Fixed型表达式时,无论视图上提供了多少维度,最后进行都只在Fixed型表达式提供的数据上进行计算。假设创建一个Fixed型表达式【类别销售额】,如下:

将【地区】和【类别】拖拽到【行】中,将【类别销售额】拖到【列】中,然后以“文本表”的形式展示数据,具体结果如下:

Fixed类型表达式还有一个特殊用途,当Fixed 后面不加任何维度,或者连Fixed都省略的时候,这就构成了表级别的详细表达式。假设创建一个【总销售额】的表达式,如下。这个表达式会对表中的所有数据求和。

将【地区】和【类别】拖拽到【行】中,将【总销售额】拖拽到【列】中,仍然以‘文本表’的形式展示结果,具体如下:

Fixed型表达式的结果一定是一组重复值,从结果上看,Fixed型表达式的结果与视图完全无关,依据Fixed表达式就可以完全确定其结果。如果Fixed型表达式中指定了维度,那么这个表达式的作用就是按照在该维度上进行聚合操作,以【类别销售额】为例,与其等价的SQL语句为:select 类别,sum(销售额) from ** group by 类别;如果没有指定维度字段,则直接按照表达式对该字段的所有数据进行聚合操作,以【总销售额】为例,与其等价的SQL语句为:select sum(销售额)  from **。

其他关于详细级别表达式的内容可以参考另一篇博客:

Tableau:详细级别表达式(二)_Sun_Sherry的博客-CSDN博客

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Tableau中使用 LOD (Level of Detail) 表达式可以实现排序逻辑。 在 Tableau 中,可以使用以下几种 LOD 表达式来实现排序逻辑: 1. {FIXED [dimension(s)]: aggregate_function(measure)}:该表达式将指定维度的值固定在特定的位置,并计算与其相关的度量值。例如,{FIXED [Region]: SUM([Sales])} 表示对 Region进行分组,按Region进行排序。 2. {INCLUDE [dimension(s)]: aggregate_function(measure)}:该表达式只计算指定维度中指定值的度量值。例如,{INCLUDE [Region]: SUM([Sales])} 表示只统计Region的数据,并对其进行排序。 3. {EXCLUDE [dimension(s)]: aggregate_function(measure)}:该表达式除了指定维度中指定值的度量值以外的所有度量值。例如,{EXCLUDE [Region]: SUM([Sales])} 表示除Region以外的所有数据进行汇总并进行排序. 在使用 LOD 表达式时,需要注意的是,使用 LOD 表达式时,需要先在底层的视图上进行配置,再在上层视图上进行展示。 ### 回答2: 在Tableau中,Level of Detail(LOD)用于在可视化过程中实现更精确的聚合和排序逻辑。通过使用LOD表达式,可以创建额外的聚合级别,以满足不同的排序需求。 要在Tableau中使用LOD实现排序逻辑,可以遵循以下步骤: 1. 确定排序的维度和度量:首先,要确定要应用排序逻辑的维度和度量。这可以是在可视化中显示的维度字段和数值字段。 2. 创建LOD表达式:使用LOD表达式来创建额外的聚合级别,以满足排序需求。LOD表达式可以包括FIXED、INCLUDE和EXCLUDE关键词。 3. 应用排序:在可视化中,将LOD表达式拖动到排序选项中,以根据LOD逻辑对数据进行排序。 举个例子来说,假设有一个销售数据集,其中包含产品类别、市场和销售额度。要按照每个市场的销售额度对产品类别进行排序,可以按照以下步骤操作: 1. 确定排序的维度和度量:以市场和销售额度为维度和度量。 2. 创建LOD表达式:创建一个LOD表达式来计算每个市场的总销售额度。可以使用以下表达式: { FIXED [市场]: SUM([销售额度]) } 3. 应用排序:将LOD表达式拖动到产品类别维度上的排序选项中。从下拉菜单中选择“按[LOD表达式]排序”,就可以根据每个市场的总销售额度对产品类别进行排序了。 通过使用LOD表达式,可以实现更精确的排序逻辑,并根据自定义的要求对数据进行排序。这样可以提供更深入和准确的洞察,并帮助用户更好地理解数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值