我们经常使用返回表的表达式作为其他 DAX 函数的参数,比如 RELATEDTABLE
在迭代表的函数中, 表的每行计值 DAX 表达式,这里的表就可以使用返回表的表达式来做进一步约束。
使用方法- [Sales Amount] :=
- SUMX (
- Sales,
- Sales[Quantity] * Sales[Unit Price]
- )
复制代码
你可以使用其他表函数替换对销售表引用。例如, 你可以使用 FILTER 函数筛选数量大于 1 的销售记录:
- [Sales Amount Multiple Items] :=
- SUMX (
- FILTER (
- Sales,
- Sales[Quantity] > 1
- ),
- Sales[Quantity] * Sales[Unit Price]
- )
复制代码
在计算列中, 还可以使用 RELATEDTABLE 函数检索位于一对多关系多端的表的所有行。例如,以下产品表的计算列统计所有产品对应的销售金额:
- Product[Product Sales Amount] =
- SUMX (
- RELATEDTABLE ( Sales ),
- Sales[Quantity] * Sales[Unit Price]
- )
复制代码
在关系函数和RELATEDTABLE 的详细说明。
你可以将对表函数的调用嵌套在同一个 DAX 表达式中,因为任何表表达式都可以是对表函数的调用。例如,在下面的产品表计算列中,只考虑数量大于 1 的销售记录,计算产品销售额。
- Product[Product Sales Amount Multiple Items] =
- SUMX (
- FILTER (
- RELATEDTABLE ( Sales ),
- Sales[Quantity] > 1
- ),
- Sales[Quantity] * Sales[Unit Price]
- )
复制代码
当发生表函数的嵌套调用时, DAX 首先计算最内层函数, 然后逐级计算到最外层。不要将此规则与 CALCULATE 函数调用参数时的计算顺序混淆。
其他表函数
DAX 中有很多可以返回表的函数,如 ALL、ADDCOLUMNS、INTERSECT、SUMMARIZE、TOPN 等等,基于这些表函数可以衍生出各种灵活的表表达式,这些表函数将在各自对应的章节中介绍。 |