函数周期表丨筛选丨值丨HASONE二人组

2021-08-30 10:25:22 浏览数 (1)

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的初学者。

0 人点赞