Tableau:详细表达式(LOD表达式)的计算过程

写在最前

  很早以前写过一篇关于Tableau详细级别表达式的博客,具体可以参考https://blog.csdn.net/yeshang_lady/article/details/104945361。前序博客重点在于介绍三种详细级表达式,这篇博客主要介绍使用详细级别表达式时的注意事项。

1 LOD表达式与非聚合运算

  在未支持详细表达式之前,Tableau表达式中并不能同时支持聚合计算和非聚合计算。如下图:
Tableau:详细表达式(LOD表达式)的计算过程_第1张图片
上述表达式会提示:“无法将聚合和非聚合参数与此函数混用”。而有了详细级别表达式之后,就可以实现上述功能了,如下图:
Tableau:详细表达式(LOD表达式)的计算过程_第2张图片
所以LOD表达式的组成部分中有聚合函数,但Tableau却将LOD表达式看作一个非聚合函数。使用上述计算字段构建如下工作表:
Tableau:详细表达式(LOD表达式)的计算过程_第3张图片使用上述工作表可以实现各个类别销售额占比的统计,其对应的SQL伪代码如下:

select 类别,sum(销售额/sum_销售额)
from
	(select sum(销售额) as sum_销售额 from 示例-超市) a --{sum([销售额])} 计算过程
	join 示例-超市 
group by 类别

既然LOD表达式可以看作一个非聚合函数,那么LOD表达式就可以继续执行一些聚合操作。具体举例如下:
Tableau:详细表达式(LOD表达式)的计算过程_第4张图片

2 LOD表达式的计算

  这一部分主要对详细级别表达式的具体结果进行分析。首先构建如下两个工作表分别计算各个类别产品和各个年份的总销售额数据,具体如下:
各个类别产品的销售额:
Tableau:详细表达式(LOD表达式)的计算过程_第5张图片
各年份总销售额:
Tableau:详细表达式(LOD表达式)的计算过程_第6张图片
创建如下详细级别表达式:
Tableau:详细表达式(LOD表达式)的计算过程_第7张图片
构建如下工作表:
Tableau:详细表达式(LOD表达式)的计算过程_第8张图片
从上述结果中可以看到,【类别销售额】在各个年份上的计算结果完全相同,并且各个年份中各个类别的销售额的计算数据均为整张表中的数据,视图详细级别【订单日期 年】字段并没有限制住Fixed型表达式的计算范围。
另创建如下详细级别表达式:
Tableau:详细表达式(LOD表达式)的计算过程_第9张图片
构建如下工作表:
Tableau:详细表达式(LOD表达式)的计算过程_第10张图片
该工作表(标号2)中各个地区计算的【总销售额_FIXED_省】的值不完全相同。这与上述工作表(标号1)中的按年份计算得出的【类别销售额】完全相同的情况完全不同。结合这两个工作表来分析视图详细级别的作用。具体如下:

  • 在第1张工作表中的视图详细级别字段【订单日期 年】中的每个年份都包含三个类别产品的销售数据,具体如下:
    Tableau:详细表达式(LOD表达式)的计算过程_第11张图片
  • 在第2张工作表中的视图详细级别字段【区域】中,每个区域仅包含部分省份,具体如下(部分截图)。而这些省份刚好也出现在工作表2中对应区域的子图中。
    Tableau:详细表达式(LOD表达式)的计算过程_第12张图片
    为了构建的Fixed型详细级别表达式【总销售额_FIXED_YEAR_REGION】:
    Tableau:详细表达式(LOD表达式)的计算过程_第13张图片
    构建如下工作表:
    Tableau:详细表达式(LOD表达式)的计算过程_第14张图片
    这里仅以【子类别】为【标签】的数据进行说明。从图中可以看到,【标签】对应的【总销售额_FIXED_YEAR_REGION】的值是由22个数据聚合而成。对细分类型为公司,子类别为标签的数据进行如下,可以看到公司-标签的【订单日期年】和【区域】的组合共有22种:
    Tableau:详细表达式(LOD表达式)的计算过程_第15张图片

你可能感兴趣的:(Tableau,tableau)