上篇文章介绍了DAX函数-ISCROSSFILTERED , 其作用是判断参数columnName是否受到交叉筛选,其满足以下三个条件之一时,结果为True:
当参数ColumnName受到直接筛选时
当与ColumnName处于同一张表中的其他字段被筛选时
当参数所在的表的拓展表中的字段被筛选时
这篇文章研究一下函数-ISFILTERED及与ISCROSSFILTERED的区别
语法:
ISFILTERED(columnName) 其作用是判断参数是否受到直接筛选,为了展示与函数ISCROSSFILTERD 的区别,本篇文章也从以下三点来进行研究
当参数ColumnName受到直接筛选时
当与ColumnName处于同一张表中的其他字段被筛选时
当参数所在的表的拓展表中的字段被筛选时
一 当参数ColumnName受到直接筛选时
使用的数据如下:

使用函数ISFILTERED判断S_index是否被直接筛选,S_index生成切片器
Dax函数:
s_index_isfiltered = ISFILTERED('成绩表'[S_index])
当S_index未被筛选时,度量值s_index_isfiltered 为False

当S_index被筛选时,度量值s_index_isfiltered True

结论为当函数ISFILTERD的参数ColumnName被直接筛选时,其结果为True
二 当与ColumnName处于同一张表中的其他字段被筛选时
用成绩表中C_index 生成切片器,当C_index 被筛选时,度量值s_index_isfiltered 依然为False

结论当参数ColumnName所在表中的其他字段被筛选时,其结果依然为False
三 当参数所在的表的拓展表中的字段被筛选时
数据更改一下:

科目表是成绩表的拓展表,依然是判断成绩表中S_index是否被直接筛选
Dax函数:s_index_isfiltered = ISFILTERED('成绩表'[S_index])
利用科目表中的任意一字段作为切片器
可以看到,当拓展表中的字段被筛选时,度量值s_index_isfiltered结果依然为False

综上所述
1. 函数ISFILTERD用来判断参数columnName是否被直接筛选,只有在直接筛选的情况下其结果才为True,这是与ISCROSSFILTERED的区别所在。
2. 当ISFILTERED(columnName)为True时,ISCROSSFILTERD(columnName)一定为True;
3. 当ISCROSSFILTERED(columName)为True时,ISFILTERED(columnName)不一定为True
参考:
ISFILTERED function (DAX) - DAXdocs.microsoft.com
水平有限,若有错误敬请指正,欢迎随时交流
关注公众号:驿路向北




