That's ALL 函数
通过上一节,我们了解到Calculate可以对初始筛选上下文增删改生成新的筛选上下文,增删改的含义如下图所示,增加即在原有基础上加入新的筛选条件缩小上下文,更改是覆盖原条件重新限定,删除即清除某删选条件扩大上下文。要想收放自如,任意地增删改上下文,我们还需要掌握两个高级筛选函数,All家族和Filter,本节先来学习All函数。
All函数可以说是增删改上下文中的删除,即在初始上下文的基础上扩大范围,这就像我们在地图上拉远了视野一样。
实际操作中你也可以把它理解为Excel中对表筛选时的清除筛选功能。
我们还继续在咖啡表的基础上做试验。值=[销售量]=sum('咖啡数据'[数量])
现在创建[销售量3]= Calculate([销售量],All('咖啡数据')),意义为清除所有筛选条件后再计算咖啡数据表的[数量]列求和, 所有值的输出结果为总计54245。
All函数不仅可以清除筛选表,还可以清除删选列,用法是一样的。我们再创建[销售量4]=Calculate([销售量],All('原材料'[咖啡种类])),得到下表
这里的列是可以多个引用的,比如All([列1],[列2],[列3]...),","表示AND的关系。
读到这里你可能会问,All函数在实际应用上有什么意义?上面的例子其实是为了说明它的原理,我们现在再做个应用的例子,求不同咖啡种类、不同杯型体积的销售量占总销售量的比,[占比] = [销售量]/[销售量3] ,数字看起来是不是有意义得多了。
看到这张表,你可能会联想到Excel传统数据透视表中也可以去显示总计的百分比,但这个只是显示形式上的相同,本质逻辑上是完全不一样的。
对于这个例子传统数据透视表还可以尽力去满足,但如果我们的需求更复杂,比如求季度平均值,占小杯咖啡销售量的比,当月占上个月销售量的比...传统数据透视表远远不能满足了。这也是前面章节一直强调的意义,度量值是数据分析游戏规则的变革者。