DAX进阶-ALL函数的理解雷区!

在文章《死磕Calculate之1:改变筛选上下文之忽略(”删“)》里,我说“把筛选上下文给去掉(删),用All函数”,如下所示:

这里面,可能强调得不够的是,对于All函数,很多朋友可能会理解为是用某表的“全部”作为筛选条件,毕竟All这个单词也有这方面的意思,而且,在DAX公式相对简单的情况下,这种基本的理解也很少会有什么问题,但是,如果碰到今天在群里这个购物篮分析的问题,可能就会犯迷糊了:

注:Calculatetable和Calculate函数类似。这里,如果你把All('课程表A')和All('课程表B')理解为按照课程表A或课程表B的所有内容进行筛选,那你就会想,因为课程表A和课程表B不是一摸一样的吗?那结果就应该是一样的哦。——这其实就是对All函数理解最容易出现的误差,因此,再次强调:All函数是用来“忽略(删除)计值上下文筛选器”的,不是用来输入筛选条件的!所以,当我看到一个DAX公式时,首先要考虑的是,该公式当前的计值上下文是什么?回到这个购物篮分析的问题,度量如下:

该度量的应用环境如下:

显然,度量“共同购买的数量”当前的筛选上下文有两个:课程A和课程B,那么对于公式:Calculatetable(values('销售订单表'[买家]),all('课程表B'))其中,values('销售订单表'[买家])首先会受到筛选器“课程A”和“课程B”的共同影响,然后,通过all('课程表B')忽略(删)掉“课程表B”这个筛选器,因此最终得到的是根据筛选器“课程A”得到的结果。同样的,对于另一条关于All('课程表A')的结果也可以这样理解。【热门文章】1个Excel文件,30+个案例表,日常函数50+个全搞定66篇Excel Power Query干货文章,助你666从入门到全面实战!神一般的数据分析案例之一:高手在民间从身份证号码提取相关信息,你还在纠结用什么公式?真的out了!Power Query和超级表结合,实现文件夹及文档管理怎么在Excel中截图?这是我常用的几种方法!

(0)

相关推荐