返回一个单行表,其中包含由 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
高总,咨询下row既然是返回的一个行表,文章最后的查询示例ROW (
“Sales Amount”, [Sales Amount],
“Margin”, [Margin]
)里的两列参数列是否限制只有一行,若本身两个参数列有多行,返回的是哪一行呢?