假设我们有如下数据,我们来统计下各班级的人数
我们在报表页里加上 班级=’二班‘ 的筛选条件,此时PowerBI已经自动为我们显示了各班级人数:一班有3人,二班有1人。
根据我们的筛选条件,我们的统计人数应该是按照筛选器,得到1人(二班)的统计结果
我们分别用
ALL(table)
ALL(table[Column])
ALLEXCEPT(table, [Column])
ALLSELECTED(table[Column])
来测试下它们的区别。
DAX代码如下:
ALL_Measure = CALCULATE(COUNTROWS('表'),ALL())
ALL姓名_Measure = CALCULATE(COUNTROWS('表'),ALL('表'[姓名]))
ALL班级_Measure = CALCULATE(COUNTROWS('表'),ALL('表'[班级]))
ALLEXCEPT_姓名_Measure = CALCULATE(COUNTROWS('表'),ALLEXCEPT('表','表'[姓名]))
ALLEXCEPT_班级_Measure = CALCULATE(COUNTROWS('表'),ALLEXCEPT('表','表'[班级]))
ALLSELECTED_姓名_Measure = CALCULATE(COUNTROWS('表'),ALLSELECTED('表'[姓名]))
ALLSELECTED_班级_Measure = CALCULATE(COUNTROWS('表'),ALLSELECTED('表'[班级]))
结果如下:
我们发现,只有
ALL('姓名') //与筛选器(班级)不同列
ALLEXCEPT('班级') //与筛选器(班级)相同列
ALLSELECTED('班级'), ALLSELECTED('姓名')
是受到了筛选器(班级)的影响。
所以我们可以简单的得出以下的结论:
ALL() --> 不受任何筛选器影响
ALL(列) ---> 指定列与筛选列不同时受影响
ALLEXCEPT(列) ---> 指定列与筛选列相同时受影响
ALLSELECTED(列) ---> 无论指定列与筛选列是否相同,都受影响