Power BI DAX,仅包含最后日期筛选器的求和列

Mou*_*oun 2 sql dax powerquery powerbi

我有一个'invoice'包含不同日期的金额表,我想对最大日期的金额求和。例如,如果最大日期是 25/03/2022,我将仅对该日期的行进行求和。

last_month_amount = calculate(SUM(invoice[amount]),FILTER(invoice, invoice[date] = LASTDATE('invoice'[date])))
Run Code Online (Sandbox Code Playgroud)

但它计算所有金额时没有任何过滤器。

在sql中我想要这个:

select sum(invoice.amount)
from invoice
where invoice.date = (select max(date) from invoice)
Run Code Online (Sandbox Code Playgroud)

但我得到了这个

select sum(invoice.amount)
from invoice
Run Code Online (Sandbox Code Playgroud)

RAD*_*ADO 6

你的公式有两个错误:

  1. 您正在发票表上使用 LASTDATE 函数,但应该在适当的日历表上使用它(它需要连续的日期);
  2. 您将 LASTDATE 放置在 CALCULATE 和 FILTER 函数中。因此,它计算这些函数的筛选器上下文中的最后日期(即,它计算每个记录的最后日期,而不是整个表的最后日期)。

要解决这个问题,只需将最后一个日期存储在变量中即可:

last_month_amount =
VAR Latest_Date = MAX ( 'invoice'[date] )
RETURN
    CALCULATE ( SUM ( invoice[amount] ), 'invoice'[date] = Latest_Date )
Run Code Online (Sandbox Code Playgroud)