10.5 理解HASONEVALUE
# HASONEVALUE
2019-11-06分类:条件判断函数阅读(21)评论(0)## HASONEVALUE
HASONEVALUE (
HASONEVALUE的作用非常直观,用来判断当前列是否只有唯一值。在VALUES函数部分,你可能记得DAX有这样一个特性:
如果返回表的表达式结果是包含一行一列的表, 则可以转换为标量值, 这种转换在需要时自动完成
实际上, 如果结果恰好是一行和一列, 则可以将任何返回表的表达式用作标量值。如果表返回多行, 在执行时会出现此错误:
该表达式引用多列,多列不能转换为标量值
因此,在表表达式返回多行(在编写DAX表达式时,你应该已经知道表表达式是否只返回一行)的情况下,你应该始终使用返回不同结果的条件来保护对标量值的转换。使用COUNTROWS可以检查目标列是否只有一个选中的值,还有一种更简单的方法是使用HASONEVALUE,它执行相同的检查,如果列只有一个值时返回TRUE,否则返回FALSE。以下两种语法是等价的:
- COUNTROWS ( VALUES (
) ) = 1 HASONEVALUE (
) 你应该使用HASONEVALUE而不是COUNTROWS,原因有二:它更易于阅读,而且计算的时候可能会稍微快一些。下面是基于HASONEVALUE的Color Name度量值的推荐写法: [Color Name] :=
- IF (
- HASONEVALUE ( Product[Color] ),
- VALUES ( Product[Color] )
- ) 当你熟悉了另一个函数SELECTEDVALUE之后,你会发现它的写法更简单,比如上面的度量值等价于
[Color Name] := SELECTEDVALUE ( Product[color] )
[
](#)[
](https://www.powerbigeek.com/hasonevalue/#)[
](https://www.powerbigeek.com/hasonevalue/#)[
](https://www.powerbigeek.com/hasonevalue/#) [
](http://app.yinxiang.com/clip.action?url=https://www.powerbigeek.com/hasonevalue/)[
](https://www.powerbigeek.com/hasonevalue/mailto:?subject=HASONEVALUE&body=https://www.powerbigeek.com/hasonevalue/) [条件判断函数](https://www.powerbigeek.com/tag/%e6%9d%a1%e4%bb%b6%e5%88%a4%e6%96%ad%e5%87%bd%e6%95%b0/)上一篇<br />[HASONEFILTER](https://www.powerbigeek.com/hasonefilter/)下一篇<br />[无法连接MySQL数据库,Could not load file or assembly ‘Renci.SshNet, Version=2016.1.0.0…](https://www.powerbigeek.com/mysq-could-not-load-file-or-assembly-renci-sshnet/)### 相关推荐
- ISFILTERED 和 ISCROSSFILTERED
- ISINSCOPE
- IF 和 SWITCH
说点什么
My content and settingstoken登出
订阅本文评论 <br />