Power BI中的DAX函数ISFILTERED可以用来判断一个表或者一个列是否被筛选器所影响。
这个函数的语法很简单,就是ISFILTERED(<table_or_column_name>),返回值是TRUE或者FALSE。那么,这个函数有什么用呢?我们来看一个例子。
假设我们有一个销售数据表,其中包含了销售人员、销售总和、月度提成等字段。我们想要创建一个度量值,用来计算不同产品的销售总额。我们可以使用SUM函数,如下:
销售总和 = SUM('业绩表'[销售业绩])
月度提成 = SWITCH(TRUE(), [销售总和]<=20000,[销售总和]*0.01, [销售总和]<=50000,[销售总和]*0.015, [销售总和]>50000,[销售总和]*0.02)
分别计算销售总和和分别对应的月度提成,计算提成用了switch函数,判断条件乘以对应的提成系数,这里小于2万提成1%,小于5万提成1.5%,大于5万提成2%。
现在需要根据切片器,更改图表展示数据。如下图
第一种情况,选择业绩时,柱形图展示业绩部分。
第二种情况,选择提成时,柱形图展示提成部分。
3.1 切片器准备
新增一个表,用作筛选器。
3.2 切换度量值准备
切换 = IF(ISFILTERED('切片器'[切片器]),SWITCH(SELECTEDVALUE('切片器'[切片器]), "提成", [月度提成], "业绩", [销售总和]),[销售总和])
新增切换度量值,简单来说就是。
SELECTEDVALUE函数,是“提成”被选中了,那么就以月度提成这个度量值来进行计算,返回值。如果是“业绩”被选中了,那么就以销售总和来计算,并返回值。
ISFILTERED函数,去检查我们的切片器是否有被使用,如果被使用了,返回true,执行selectedvalue函数代码,配合IF函数,没有被选中,就直接根据销售总和来返回值。
选择业绩时,如下
达到了我们开头需要的功能。灵活使用SELECTEDVALUE以及ISFILTERED,可以节约一部分我们的展示空间,在有限的展示面积中,更全面的展示我们的数据。
以上就是今天的分享,我是simone,期待下次分享。