DAX函数从A到Z——一个都不能少
今儿我们要介绍一个筛选器函数“ALL”函数。ALL函数的作用是“返回表中的所有行或者返回列中的所有值,同时忽略可能已应用的任何筛选器。 此函数可用于清除筛选器并对表中的所有行创建计算”。ALL函数只需要填入你不想要被筛选器筛选的字段就可以了。
例如,我们需要计算每个品类的销售额在总销售额中的占比。我们希望达到的效果是分子位置上是经过品类筛选过的销售额,分母位置上是不被筛选的全部销售额。
理清需求之后,我们就可以开始写公式了
【销售占比 = DIVIDE(SUM('销售'[销售额]),CALCULATE(SUM('销售'[销售额]),ALL('销售'[销售额])))】
上面的公式得到以下结果:
我们可以明显的发现这个结果是错的。
这是因为在上面的使用过程中,我们没有搞清楚ALL函数究竟是如何作用的。阿航面的错误示范确实是我在接触ALL函数最初所犯的错误。
ALL函数是清除筛选器对表或者对某列数据的作用的,所以在使用ALL函数时,我们需要搞清楚需要清除的筛选条件究竟是什么,而不是使用ALL来直接确保某一列数据全部出现。
所以关于上述案例ALL函数正确的使用方法是,使用ALL函数清除对“品类”的筛选。
【销售占比 = DIVIDE(SUM('销售'[销售额]),CALCULATE(SUM('销售'[销售额]),ALL('销售'[品类])))】
上面的公式得到以下结果:
这样就得到我们想要的正确的结果了。
如果问题情境改为,计算每个年度的销售额占近三年销售总额的占比。那么我们就只需要使用ALL函数清除对“年度”的筛选。
【销售占比 = DIVIDE(SUM('销售'[销售额]),CALCULATE(SUM('销售'[销售额]),ALL('销售'[年度])))】
上面的公式得到以下结果:
ALL函数使用的重点在于理解ALL函数用于清除某个筛选器的筛选作用,而不是直接使某一列或某张表的数据全部出现,所以在ALL函数里的字段是需要被清除的筛选条件字段。
Read after me!
ALL函数里的字段是需要被清除的筛选条件字段!
ALL函数里的字段是需要被清除的筛选条件字段!!
ALL函数里的字段是需要被清除的筛选条件字段!!!
以上,再见!
*Power Pivot工坊原创文章,转载请注明出处。
延伸阅读:
PBI 自定义可视化对象介绍——Strippet Browser
萌新学BI - Infographic Designer自定义可视化
萌新学Power BI - 又见切片器Chiclet Slicer
如果您想深入学习微软Power BI,欢迎登录网易云课堂试听学习我们的“从Excel到Power BI数据分析可视化”系列课程。或者关注我们的公众号(PowerPivot工坊)后猛戳”在线学习”
长按下方二维码关注“Power Pivot工坊”获取更多微软Power BI、PowerPivot相关文章、资讯。欢迎小伙伴儿们转发分享~