写在最前
本篇博客主要介绍筛选器对详细级别表达式的影响。而关于详细级别表达式和筛选器器可以参考相关博客:
- Tableau详细级别表达式:https://blog.csdn.net/yeshang_lady/article/details/104945361
- Tableau筛选器:https://blog.csdn.net/yeshang_lady/article/details/119348365
Tableau中筛选器和三种详细级别表达式的优先级如下图所示:
从图上可以得出以下结论:
- Fixed型表达式:Fixed型表达式会忽略上下文筛选器、数据源筛选器和数据提取筛选器之外的所有筛选器
- Include型/Exclude型表达式:Include型/Exclude型表达式会忽略维度筛选器、度量筛选器以及表计算筛选器。
本篇博客主要是为了详细论述筛选器对LOD表达式的影响,六种筛选器不会一一进行介绍,这里仅以上下文筛选器、维度筛选器和度量筛选器为例进行阐述。
本篇博客依然使用Tableau中自带的【示例-超市】数据集为例进行说明。
1 Fixed型表达式与筛选器
按照上述结论可以知道,除了上下文筛选器会对Fixed型表达式施加影响之外,其余两种筛选器对其并没有影响。所以这一部分仅以上下文筛选器和维度筛选器为例进行说明。先创建如下Fixed型详细级别表达式:
- 第1种情况: 当在工作表中使用了维度筛选器时,Fixed型表达式会忽略该筛选器。
比如,当维度筛选器中使用【订单日期】字段作为筛选字段,而Fixed型表达式中的维度为【区域】时,此时的维度筛选器并没有起到数据筛选的作用。如下图:
此时,其对应的SQL伪代码如下:
select SUM(销售额_FIXED_REGION)
from (
select 区域,SUM(销售额) AS 销售额_FIXED_REGION
from 示例-超市
group by 区域) -- Fixed型表达式的计算
- 第2种情况: 当在工作表中使用了上下文筛选器时,该筛选器会对Fixed型表达式的计算数据产生影响。比如,当上下文筛选器使用【订单日期】作为筛选字段时,其具体计算结果如下(从结果中可以看出,此时Fixed型详细表达式的计算数据会被限定为2018年的订单数据):
下面使用SQL伪代码说明Fixed表达式的计算过程,具体如下:
select SUM(销售额_FIXED_REGION)
from (
select 区域,SUM(销售额)AS 销售额_FIXED_REGION
from 示例-超市
where year(订单日期)= 2018 --数据源筛选器、数据提取筛选器和上下文筛选器作用的地方
group by 区域) -- Fixed型表达式的计算
通过以上两种情况的对比可以知道:上下文筛选器等优先级高于Fixed型表达式的筛选器会先对Fixed表达式的计算数据进行筛选。
在以上这两种情况中,无论是维度筛选器中的筛选字段与Fixed型表达式中的维度字段不同,但如果两者相同又会发生什么情况呢?
- 第3种情况: 当Fixed型表达式中的字段放到维度筛选器中时,会对Fixed型汇总之后的数据按照筛选器指定的字段进行筛选。具体如下:
此时
这里同时将【区域】放到了颜色框中,在【销售额_FIXED_REGION】列对应的条形图中可以看到,其计算结果仅包含“东北”区域的数据。此时,其对应的SQL伪代码具体如下:
select SUM(销售额_FIXED_REGION)
from(
select 区域,SUM(销售额) AS 销售额_FIXED_REGION
from 示例-超市
group by 区域) -- Fixed型表达式的计算
where 区域=东北 --当维度筛选器的字段与Fixed型表达式中的维度相同时,在这里做了数据筛选。
为了与第1种情况做一个鲜明的对比,这里将第1种情况中图做如下修改:
2 Include型表达式与筛选器
按照上述结论,维度筛选器会对Include型表达式会对Include型表达式施加影响,这里仅以维度筛选器和度量筛选器为例进行说明。为了方便后续说明,创建如下Include型表达式,具体如下:
- 第1种情况:当工作表中添加了维度筛选器后,维度筛选器会对Include型表达式的计算数据产生影响。比如,当维度筛选器中使用【细分】字段作为筛选字段,而Incldue型表达式中的维度为【区域】时,其具体计算结果如下图:
- 第2种情况:当在工作表中是使用了度量筛选器器时,Include型表达式会忽略该筛选器。比如这里适用【数量】作为度量筛选字段(这里具体的设置条件不重要),其结果如下:
度量筛选器是对各个分组进行聚合之后的结果进行筛选,所以最后只剩下了“桌子”。