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

返回表的表达式

我们经常使用返回表的表达式作为其他 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 函数调用参数时的计算顺序混淆。

正如你稍后将看到的, 嵌套调用的执行顺序可能是造成理解混乱的根源, 因为 CALCULATETABLE 的计值顺序与 FILTER 不同。在迭代函数章节, 你将了解 FILTER 的行为, 在 CALCUALTE 函数一节会介绍关于 CALCULATETABLE 的内容。

其他表函数

DAX 中有很多可以返回表的函数,如 ALL、ADDCOLUMNS、INTERSECT、SUMMARIZE、TOPN 等等,基于这些表函数可以衍生出各种灵活的表表达式,这些表函数将在各自对应的章节中介绍。

 

说点什么

avatar
1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
  订阅本文评论  
提醒