[知识体系] 理解 HASONEVALUE

  [复制链接]
查看219642 | 回复169 | 2021-2-21 18:59:05 | 显示全部楼层 |阅读模式
HASONEVALUE
  1. HASONEVALUE ( <ColumnName> )
复制代码

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


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


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


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


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


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

你应该使用 HASONEVALUE 而不是 COUNTROWS,原因有二:它更易于阅读,而且计算的时候可能会稍微快一些。下面是基于 HASONEVALUE 的 Color Name 度量值的推荐写法:
  1. [Color Name] :=
  2. IF (
  3.     HASONEVALUE ( Product[Color] ),
  4.     VALUES ( Product[Color] )
  5. )
复制代码

当你熟悉了另一个函数 SELECTEDVALUE 之后,你会发现它的写法更简单,比如上面的度量值等价于
  1. [Color Name] := SELECTEDVALUE ( Product[color] )
复制代码
回复

使用道具 举报

培记 | 2021-4-24 15:21:07 | 显示全部楼层
呵呵。。。.....
回复

使用道具 举报

newdeng | 2021-4-27 17:01:53 | 显示全部楼层
回个帖子,下班咯~
回复

使用道具 举报

南半球 | 2021-5-21 08:46:26 | 显示全部楼层
前排,哇咔咔
回复

使用道具 举报

ana314 | 2021-6-4 08:18:18 来自手机 | 显示全部楼层
云发教育是我遇到最好的机构,和其他机构有本质区别
回复

使用道具 举报

冲红灯 | 2021-6-4 11:02:07 | 显示全部楼层
沙发???
回复

使用道具 举报

ぁ隨夢飄搖お | 2021-6-12 21:57:37 | 显示全部楼层
看起来不错
回复

使用道具 举报

lidazhang | 2021-10-2 12:13:11 来自手机 | 显示全部楼层
支持,一直很喜欢老师的课程
回复

使用道具 举报

jason_dion | 2021-10-22 18:09:03 | 显示全部楼层
元芳你怎么看?
回复

使用道具 举报

夕风 | 2021-10-30 08:21:14 | 显示全部楼层
我也顶起出售广告位
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则