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

理解 ROW

返回一个单行表,其中包含由 DAX 表达式指定的新列。

ROW

ROW ( <Name>, <Expression>, [<Name>, <Expression>], [ … ] )
参数 属性 描述
Name 可重复 新列的名称
Expression 可重复 新列使用的表达式

EVALUATE只能返回表。如果你想计算一个或多个标量值,在缺少表环境的情况下可以使用 ROW 函数,它返回一个包含所需列的单行表。与 ADDCOLUMNSSELECTCOLUMNS 的作用类似,对于函数的每一列,你都需要指定一个名称(必须是一个常量字符串),然后计算表达式,以便在返回的行中为该列提供唯一值。命名规则与 ADDCOLUMNSSELECTCOLUMNS 函数的规则相同,可以根据需要添加任意数量的列。

示例用法

当需要返回多个标量值的时候,可以用 ROW 函数将所有度量值放入一个查询,例如,以下查询返回一行两列的表,包含 2008 年和 2009 年的销售数量:

EVALUATE
ROW (
    "Quantity 2008", CALCULATE (
        SUM ( Sales[Quantity] ),
        'Date'[Calendar Year Number] = 2008
    ),
    "Quantity 2009", CALCULATE (
        SUM ( Sales[Quantity] ),
        'Date'[Calendar Year Number] = 2009
    )
)

结果中的列不具备数据模型中物理列的沿袭

查询结果

你可以在任何需要引用表的 DAX 表达式中使用 ROW 函数。如果 DAX 版本支持,可以使用 UNION 函数组合多个行,以返回任意定义的多个行组成的表。

更简单的方式:表构造器

在某些情况下,我们甚至不需要带列名的表,这个时候表构造器是比 ROW 函数更好的选择,比如 IN 条件,用 DAX Studio 调试度量值。例如下面这个查询:

ROW (
    "Sales Amount", [Sales Amount], 
    "Margin", [Margin] 
)

等价于表构造器

{ ( [Sales Amount], [Margin] ) }

唯一区别是后者在结果表使用默认的列名 Value1,Value2

2
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
1 评论数
1 被回复的评论
1 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
qingkou55

高总,咨询下row既然是返回的一个行表,文章最后的查询示例ROW (
“Sales Amount”, [Sales Amount],
“Margin”, [Margin]
)里的两列参数列是否限制只有一行,若本身两个参数列有多行,返回的是哪一行呢?

DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组/连接函数

集合函数

其他函数