SUMIFS 的 PowerBi DAX 等效项,当前行值作为过滤器

PowerBi DAX equivalent for SUMIFS with current row value as filter

在 Excel 中我可以,如果我在一个名为 'Sales' 的 table 中有四列

销售额

Month, CustomerId, ProductId, TotalQuantity
Jan,1, CAR,
Feb,1, CAR,

我可以添加一个公式:

=SUMIFS(Sales[Quantity],Sales[CustomerId],[@[CustomerId]])

这将转到销售 table 并对按输入公式的当前行的 CustomerID 过滤的 CustomerID 列求和。

我试图在 PowerBI 计算行中复制它,但我无法让 @ 为行引用工作。它看起来像

TotalQuantity = CALCULATE(SUM(Sales[Quantity]),Sales[CustomerId] = Sales[CustomerId]))

知道如何让等效的 @ 工作吗?

我认为您缺少的关键功能是 EARLIER。这并不奇怪,因为它有一个误导性的名称——它的真正意思是 "Current Row"。您还需要在 CALCULATE 的 Filter 参数中使用 FILTER 函数,以将过滤器上下文重置为整个 table.

因此您的新列函数可能如下所示:

TotalQuantity = CALCULATE(SUM(Sales[Quantity]), FILTER(Sales, Sales[CustomerId] = EARLIER (Sales[CustomerId])))

这是一个简洁的示例,来自最易访问的 DAX 公式源站点:

http://www.powerpivotpro.com/2013/07/writing-a-subtotal-calc-column-aka-the-simplest-use-of-the-earlier-function/

这里是 EARLIER 的官方文档:

https://msdn.microsoft.com/en-us/library/ee634551.aspx