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