东哥陪你学DAX——上下文系列小讲堂(三)
初识筛选上下文
介绍过“行上下文”,我们再来看看“筛选上下文”
先来建个度量值“总销量 = SUM ( '销售表'[销量] )”,把它扔进“条形图”
024.png当前没有任何筛选上下文,图里孤零零挂着一个汇总值。不过也确实体现了公式本意——SUM函数不就是汇总求和的意思么?上图显示完全没问题
接下来我们往图里放点其他东西——把“大类”拖进去
025.png按理说,出现这种结果也是天经地义。不过,再回顾一下“总销量 = SUM('销售表'[销量])”,公式里明明没有限定按大类还是小类,可图中怎么会自动根据大类显示了汇总?
如果把“小类”再拖进去呢,会有什么结果
026.png公式依旧未变,但数据子集继续变化。显然,这个度量值会根据矩阵环境的变化而对汇总进行自动匹配
同理,继续加入其他过滤条件,度量值的范围也会跟随条件越来越精细
027.png 028.png还记不记得前文“行上下文”的时候,也提过这个问题
度量值不会创建“行上下文”,那必定存在另一种上下文——对,就是“筛选上下文”
不单单是上面这个汇总公式SUM,几乎所有的DAX公式,都会根据筛选上下文而给出不同的结果
034.png这一点,粗看起来,跟Excel的透视表效果差不多,但背后原理却大相径庭。还记得第一篇《什么是上下文》里,那四个百分比指标吗(下图),如果换成Excel环境,这四个指标不把你搞到肾出血我不姓东
004.png就当前展示来看,可以把“筛选上下文”暂且看作所有可视化元素筛选的叠加集合,如下图
029.png由上图我们可以知道,一个单元格的筛选上下文由一系列筛选条件组成,上图矩阵中的数值“36”,就来源于六个筛选条件,如果继续往上图中加入可视化元素,添加其他维度——诸如产品颜色、尺寸、供应商、客户等属性,那么筛选上下文仍会继续变动,单元格内的值也会随之不同
所有的这些筛选决定了该单元格的“筛选上下文”,DAX公式在计算前,将先把筛选上下文应用到数据模型,得到筛选子集后,再进行计算
因此,筛选上下文是多个筛选的集合,这便是它的入门定义
如何创建“筛选上下文”
035.png
1)可视化图表指的是大部分可视化元素
2)筛选器,在可视化面板隔壁 3)Calculate函数(该函数语法结构很简单,但运算逻辑较为复杂,将在后续章节专门介绍)
筛选上下文在创建的初始状态是静态的,但由于报表具有交互操作功能,在用户与之互动过程中,筛选上下文随时都可以修改调整其范围。以下四种操作,可以达到调整筛选上下文的目的
036.png至此,大家对两种上下文有了初步印象
在大部分业务场景下,两种上下文会同时作用于数据展示,概念不清基础不牢的同学,很容易被一些是似而非模棱两可的表象给带偏。还是那句老话,本系列看不懂理不清的地方,可以暂时搁置,经常回来翻看,每次必定会有新收获
牢记一点:筛选上下文不迭代,行上下文不筛选
039.png image(未完待续)