在具有多个筛选器的 DAX 中使用 SUMX 函数。适用于字符串常量但不适用于变量

Using the SUMX function in DAX with multiple filters. Works with string constant but not with variable

我在 table Power BI Desktop 中有以下 DAX 公式:

SUMX (
    FILTER (
        DatePQ,
        DatePQ[DatePQ].[Date] <= EARLIER ( DatePQ[DatePQ].[Date] )
            && DatePQ[WH] = DatePQ[WH]
    ),
    DatePQ[QTY]
)

如你所见,里面有两个过滤器。实际上,该函数似乎忽略了第二个过滤器(对于 DatePQ[WH])。但是,如果我把它写成等于一个字符串常量:

SUMX (
    FILTER (
        DatePQ,
        DatePQ[DatePQ].[Date] <= EARLIER ( DatePQ[DatePQ].[Date] )
            && DatePQ[WH] = "Adams"
    ),
    DatePQ[QTY]
)

通过使用常量“Adams”,该函数可以正常工作。但是,此值需要是一个变量。例如,如果在 Excel 中,使用 SUMIFS,可以写成:

SUMIFS(QTY, DatePQ, "="&DatePQ, WH, "="&WH)

其中 QTY、DatePQ 和 WH 是列的名称。

感谢您一如既往的帮助。

比较 DatePQ[WH] = DatePQ[WH] 始终为真,因为您是在将值与其自身进行比较。 看起来您正确地为 [DatePQ] 使用了 EARLIER 函数,但忘记为 [WH].

做同样的事情

尝试对两者都使用 EARLIER 或改用变量。

SUMX (
    FILTER (
        DatePQ,
        DatePQ[DatePQ].[Date] <= EARLIER ( DatePQ[DatePQ].[Date] )
            && DatePQ[WH] = EARLIER ( DatePQ[WH] )
    ),
    DatePQ[QTY]
)

SUMX (
    VAR CurrDate = DatePQ[DatePQ].[Date]
    VAR CurrWH = DatePQ[WH]
    RETURN
        FILTER ( DatePQ, DatePQ[DatePQ].[Date] <= CurrDate && DatePQ[WH] = CurrWH ),
    DatePQ[QTY]
)