You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI中忽略日期过滤器的DAX度量值累计总计实现求助

解决Power BI中基于日期的累计交易金额度量问题

问题核心

原度量_turnover_chart中使用了REMOVEFILTERS('calendar'),会完全清除日历表的筛选上下文,导致后续添加的日期累计筛选('calendar'[cal_posted_date] <= MaxDate)无法生效。

解决方案

直接重构累计逻辑,将日期筛选整合到申请编号的获取环节:

_turnover_cumulative = 
VAR MaxDate = MAX('calendar'[cal_posted_date])
-- 获取截止到当前日期的所有TRAN类型申请编号
VAR applNos = 
    CALCULATETABLE(
        DISTINCT(combined_apps[appl_appl_no]),
        combined_apps[table_type] = "TRAN",
        'calendar'[cal_posted_date] <= MaxDate
    )
-- 计算上述申请编号对应的所有TRAN交易金额总和
RETURN
CALCULATE(
    SUM(combined_apps[tran_amount]),
    combined_apps[appl_appl_no] IN applNos,
    combined_apps[table_type] = "TRAN"
)

逻辑说明

  1. 通过MaxDate获取当前行上下文的最大日期(即表格每行对应的日期)
  2. 筛选出截止到该日期的所有table_type = "TRAN"的申请编号
  3. 基于这些编号计算所有关联交易金额的总和,自然得到累计值

可选优化(复用原度量)

如果需要保留原度量的复用性,可修改原度量使其响应日历的日期上下文:

_turnover_chart = 
VAR CurrentDateRange = 
    IF(
        ISBLANK(MAX('calendar'[cal_posted_date])),
        ALL('calendar'), -- 无日期筛选时取全部数据
        'calendar'[cal_posted_date] <= MAX('calendar'[cal_posted_date]) -- 有日期筛选时取截止到当前日期的范围
    )
VAR applNos = 
 CALCULATETABLE(
    DISTINCT(combined_apps[appl_appl_no]), 
    combined_apps[table_type] = "TRAN",
    CurrentDateRange
    )

RETURN
CALCULATE(
  SUM(combined_apps[tran_amount]),
  combined_apps[appl_appl_no] IN applNos,
  combined_apps[table_type] = "TRAN"
 )

此时累计度量可简化为:

_turnover_cumulative = 
CALCULATE(
    _measures[_turnover_chart],
    ALLSELECTED('calendar') -- 保留外部筛选(如2023年10月的筛选)
)

内容的提问来源于stack exchange,提问作者Gray Meiring

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:07:03