近期开始重新梳理、升级Tableau的知识体系,从而为客户提供更高质量的服务和技术支持。得益于春节期间阅读的learning SQL一书,近日尝试从更本质的视角看待业务分析中的“筛选”过程,并整理笔记如下。本文虽短,内容却非常关键,后期有缘展开补充。
1
筛选看似简单,但又是异常复杂的体系。它的功能看似独立,实则是逻辑计算的化身;分类众多、次序敏感,因此不合理的使用特别容易导致性能问题,甚至样本错误。
近期尝试从另一个角度解释筛选及其相关功能:set集、计算。

2
首先,筛选必然包括两个部分:筛选对象、筛选条件,二者相互依赖,缺一不可。只是在一些情形下,表述有所省略,比如“2022年,不同类别的销售额”默认是针对订单或交易的筛选,而“销售额前10的产品销售额”筛选针对“产品”。
不管使用什么工具,建议先把问题用标准的“三段式结构”来表述,并进一步展开它们的构成要素,有助于理解问题。

3
其次,所有筛选都是逻辑计算,而计算必然是在特定层次上的计算;因此,所有的筛选(计算)也必然是在指定层次上的筛选(计算)。
计算的层次主要有数据表明细的行级别层次(row level)、对应视图的问题层次两大类,因此,筛选也分为行级别的计算筛选、针对问题的聚合计算筛选两大类。其他的条件筛选等高级筛选,都可以视为是二者基础上的组合和升级。

沿着这样的体系,不仅可以数据准备与计算结合在一起,也可以把筛选与计算结合在一起,而它们衔接的关键是:层次。
层次 = LOD = Level = 维度组合
能理解上面的过程,就可以“跳出筛选”理解筛选,从而在复杂的筛选体系中游刃有余。
“跳出三界外,不在五行中”,所言不虚。