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 公式源站点:
这里是 EARLIER 的官方文档:
在 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 公式源站点:
这里是 EARLIER 的官方文档: