返回一个单行表,其中包含由 DAX 表达式指定的新列。
ROW- ROW ( <Name>, <Expression>, [<Name>, <Expression>], [ … ] )
复制代码参数 | 属性 | 描述 | Name | 可重复 | 新列的名称 | Expression | 可重复 | 新列使用的表达式 |
EVALUATE只能返回表。如果你想计算一个或多个标量值,在缺少表环境的情况下可以使用 ROW 函数,它返回一个包含所需列的单行表。与 ADDCOLUMNS 和 SELECTCOLUMNS 的作用类似,对于函数的每一列,你都需要指定一个名称(必须是一个常量字符串),然后计算表达式,以便在返回的行中为该列提供唯一值。命名规则与 ADDCOLUMNS 和 SELECTCOLUMNS 函数的规则相同,可以根据需要添加任意数量的列。
示例用法
当需要返回多个标量值的时候,可以用 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 |