很早以前写过一篇关于Tableau详细级别表达式的博客,具体可以参考https://blog.csdn.net/yeshang_lady/article/details/104945361。前序博客重点在于介绍三种详细级表达式,这篇博客主要介绍使用详细级别表达式时的注意事项。
在未支持详细表达式之前,Tableau表达式中并不能同时支持聚合计算和非聚合计算。如下图:
上述表达式会提示:“无法将聚合和非聚合参数与此函数混用”。而有了详细级别表达式之后,就可以实现上述功能了,如下图:
所以LOD表达式的组成部分中有聚合函数,但Tableau却将LOD表达式看作一个非聚合函数。使用上述计算字段构建如下工作表:
使用上述工作表可以实现各个类别销售额占比的统计,其对应的SQL伪代码如下:
select 类别,sum(销售额/sum_销售额)
from
(select sum(销售额) as sum_销售额 from 示例-超市) a --{sum([销售额])} 计算过程
join 示例-超市
group by 类别
既然LOD表达式可以看作一个非聚合函数,那么LOD表达式就可以继续执行一些聚合操作。具体举例如下:
这一部分主要对详细级别表达式的具体结果进行分析。首先构建如下两个工作表分别计算各个类别产品和各个年份的总销售额数据,具体如下:
各个类别产品的销售额:
各年份总销售额:
创建如下详细级别表达式:
构建如下工作表:
从上述结果中可以看到,【类别销售额】在各个年份上的计算结果完全相同,并且各个年份中各个类别的销售额的计算数据均为整张表中的数据,视图详细级别【订单日期 年】字段并没有限制住Fixed型表达式的计算范围。
另创建如下详细级别表达式:
构建如下工作表:
该工作表(标号2)中各个地区计算的【总销售额_FIXED_省】的值不完全相同。这与上述工作表(标号1)中的按年份计算得出的【类别销售额】完全相同的情况完全不同。结合这两个工作表来分析视图详细级别的作用。具体如下: