HASONEFILTER函数与HASONEVALUE函数
严格来说,HASONEFILTER函数与HASONEVALUE函数属于“筛选判断”类函数,隶属于“值”函数,当符合条件时,结果返回TRUE或FALSE。
用途:通常用来去掉总计栏合计。
语法
语法1:
代码语言:txt复制DAX=
HASONEFILTER(<列>)
等同于以下代码:
代码语言:txt复制COUNTROWS ( FILTERS ( <列> ) ) = 1
语法2:
代码语言:txt复制DAX=
HASONEVALUE(<列>)
等同于以下代码:
代码语言:txt复制COUNTROWS ( VALUES ( <列> ) ) = 1
参数
列:必须是现有物理列,不能是表达式。
返回结果
TRUE或FALSE。
区别二者用途基本上是类似的,区别在于HASONEFILTER受直接筛选影响;而HASONEVALUE受交叉筛选影响。
例子
模拟数据:
这是白茶随机模拟的一组数据。
例子1:
代码1:
代码语言:txt复制HASONEFILTER =
IF ( HASONEFILTER ( '例子'[类别] ), SUM ( '例子'[数据] ), BLANK () )
代码2:
代码语言:txt复制HASONEVALUE =
IF ( HASONEVALUE ( '例子'[类别] ), SUM ( '例子'[数据] ), BLANK () )
结果:
当二者同处于参数上下文环境中,作用是一致的,就是去掉总计栏总计。
在这个上下文中,难以分辨二者的区别,换个上下文:
度量值白茶没有任何修改,还是上面的两组代码,小伙伴们思考一下问题出在哪里呢?
思考一下!
1
2
3
......
二者的区别在于受到筛选影响不同:
1、HASONEFILTER函数只受到直接筛选影响。
在上述图中,因为直接筛选条件类别并不在当前上下文中,默认筛选条件为空,因此HASONEFILTER返回结果为FALSE。
2、HASONEVALUE函数受到交叉筛选影响,且判断当前列是否存在唯一值,存在则返回TRUE,否则返回FALSE。
因为受到交叉筛选影响,此上下文中组别筛选效果等同于类别,且只有“鞋组”是唯一值,所以呈现结果为14;
同理受到交叉筛选影响,此上下文中日期筛选效果等同于类别,且每一个都是唯一值,所以呈现所有数据。
小伙伴们❤GET了么?
白茶会不定期的分享一些函数卡片
(文件在知识星球PowerBI丨需求圈)
这里是白茶,一个PowerBI的初学者。