从数据到信息
从信息到洞察

HASONEVALUE

HASONEVALUE

HASONEVALUE ( <ColumnName> )

当指定列中只有一个值时,返回 true。

HASONEVALUE 的作用非常直观,用来判断当前列是否只有唯一值。在 VALUES 函数部分,你可能记得 DAX 有这样一个特性:

如果返回表的表达式结果是包含一行一列的表, 则可以转换为标量值, 这种转换在需要时自动完成

实际上, 如果结果恰好是一行和一列, 则可以将任何返回表的表达式用作标量值。如果表返回多行, 在执行时会出现此错误:

该表达式引用多列,多列不能转换为标量值

因此,在表表达式返回多行(在编写 DAX 表达式时,你应该已经知道表表达式是否只返回一行)的情况下,你应该始终使用返回不同结果的条件来保护对标量值的转换。使用 COUNTROWS 可以检查目标列是否只有一个选中的值,还有一种更简单的方法是使用 HASONEVALUE,它执行相同的检查,如果列只有一个值时返回 TRUE,否则返回 FALSE。以下两种语法是等价的:

COUNTROWS ( VALUES ( <column> ) ) = 1
HASONEVALUE ( <column> )

你应该使用 HASONEVALUE 而不是 COUNTROWS,原因有二:它更易于阅读,而且计算的时候可能会稍微快一些。下面是基于 HASONEVALUE 的 Color Name 度量值的推荐写法:

[Color Name] :=
IF (
    HASONEVALUE ( Product[Color] ),
    VALUES ( Product[Color] )
)

当你熟悉了另一个函数 SELECTEDVALUE 之后,你会发现它的写法更简单,比如上面的度量值等价于

[Color Name] := SELECTEDVALUE ( Product[color] )

 

说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
  订阅本文评论  
提醒