DAX 表达式根据该日期的值对日期当天和之前的值求和

问题描述 投票:0回答:1

我在 Power BI 中有以下表格:日历和组合应用程序。日历通过“calendar”[cal_posted_date] 连接到合并的应用程序,以一对多的关系连接到合并的应用程序[date_join]。

我正在尝试计算 SUM(combined_apps[tran_amount])。

我的页面上有一个使用“日历”[cal_posted_date] 的切片器。假设我选择了 2023 年 10 月 18 日的日期。我想计算该日期以及该日期及之前的所有日期的 tran_amount 总和,但仅限于合并的应用程序 [appl_appl_no] 等于所选日期中的 appl_appl_no 的情况。

例如,如果在 2023-10-18 总和等于 1000 美元,并且该日期的 appl_appl_no 是 20055、20035 和 20038,我想要该日期以及之前所有日期的这些数字的总和.

我正在使用以下公式:

Purchases = 
VAR SelectedDates = VALUES('calendar'[cal_posted_date])
RETURN
CALCULATE(
    SUM(combined_apps[tran_amount]),
    combined_apps[tran_code] IN {"35", "37"},
    combined_apps[tran_effective_date] <= MAXX(SelectedDates, 'calendar'[cal_posted_date]),
    combined_apps[appl_appl_no] IN
        CALCULATETABLE(
            VALUES(combined_apps[appl_appl_no]),
            combined_apps[tran_effective_date] IN SelectedDates
        )
)

问题是,它仍然只计算所选日期,而不计算之前的日期。我意识到这是因为即使我要求它计算之前的日期,因为切片器设置为 2023 年 10 月 18 日,它仍然只计算该日期。如何修改 DAX 表达式以满足我的需求?

powerbi dax
1个回答
0
投票

您需要通过

ALL
REMOVEFILTERS
从日期切片器中删除“过滤器上下文”。尝试:

Purchases = 
  var maxDate = MAX('calendar'[cal_posted_date])
  var applNos = DISTINCT(combined_apps[appl_appl_no])

  return
    CALCULATE(
      SUM(combined_apps[tran_amount]),
      REMOVEFILTERS('calendar'),
      combined_apps[tran_code] IN {"35", "37"},
      combined_apps[tran_effective_date] <= maxDate,
      combined_apps[appl_appl_no] IN applNos
  )
© www.soinside.com 2019 - 2024. All rights reserved.