人生没有彩排
每一天都是现场直播

39、理解HASONEVALUE函数

HASONEVALUE函数的使用频率也很高,它可以判断指定列的可见数据去重后是不是只有一个值,经常用于判断矩阵所处的层级,以及作为将表当作标量值来使用时的保护机制。


语法和作用

语法:HASONEVALUE(columnName)

作用:如果指定列的可见数据只有一个非重复值,则返回TRUE,否则返回FALSE。

注意:判断的是可见数据,因此是在筛选上下文中进行计值的,而不是行上下文。


辅助理解的例子

1、判断指定列的可见数据是否只有一个非重复值,即可见数据去重后是不是只有一个值,如下图所示:

右边的度量值2中筛选了两个产品类别,所以产品类别字段的可见数据中有两个产品类别,而不是一个,因此返回FALSE。

2、HASONEVALUE函数判断的是可见数据去重后的值的数量,所以不一定需要被筛选,假如某个字段的所有数据恰好去重后只有一个值,那么HASONEVALUE函数也会返回TRUE的,如下图所示:

3、可以使用HASONEVALUE函数判断矩阵的层级,根据不同的层级采用不同的计算逻辑,如下图所示:

4、单行单列的表可以当作标量值来使用,但有时候在矩阵的总计等层级时有可能就不再是单行单列的表了,因此可能就会报错,那么这时使用HASONEVALUE函数就可以作为一道防御机制,预先判断表是不是只有单行单列,从而避免报错,具体如下图所示:

5、HASONEVALUE函数的功能可以使用其他函数代替,但没那么简洁,其等价写法如下:

Measure = HASONEVALUE('Table'[Column])

等价于:

Measure = IF(COUNTROWS(VALUES('Table'[Column]))=1,TRUE(),FALSE())

6、最后,正如其等价写法中使用了VALUES函数一样,HASONEVALUE函数在判断可见数据时,也是会把参照完整性不匹配时自动添加的空行也纳入判断的,如下图所示:


总结

总的来说,HASONEVALUE函数是比较简单易懂的函数,并且其作用也比较广,是必须要掌握的函数之一。

未经允许不得转载:夕枫 » 39、理解HASONEVALUE函数