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

DAX年度累计总计问题:无交易期间累计值不延续求解

解决SSAS表格模型中YTD累计无交易期间不延续的问题

你的问题出在当某期间无交易时,SUM(Financials[Total_PL])会返回空白,导致累计值无法显示,但总计正确是因为它计算的是全年所有有交易期间的总和。以下是两种可行的修改方案:

方案一:基于现有逻辑修复空值

保留你原有的期间筛选逻辑,通过获取最近有交易期间的累计值来填充空白:

RunningTotalUSD :=
VAR CurrentYear = MAX(AccountingPeriod[AccountingPeriodYear])
VAR CurrentPeriod = MAX(AccountingPeriod[AccountingPeriod])
-- 计算当前期间及之前的YTD总和(无交易时返回空白)
VAR YTDSum =
    CALCULATE(
        SUM(Financials[Total_PL]),
        FILTER(
            ALL(AccountingPeriod),
            AccountingPeriod[AccountingPeriodYear] = CurrentYear
                && AccountingPeriod[AccountingPeriod] <= CurrentPeriod
        )
    )
-- 获取到当前期间为止,最后一个有交易期间的YTD累计值
VAR LastValidYTD =
    CALCULATE(
        SUM(Financials[Total_PL]),
        FILTER(
            ALL(AccountingPeriod),
            AccountingPeriod[AccountingPeriodYear] = CurrentYear
                && AccountingPeriod[AccountingPeriod] <= CurrentPeriod
        ),
        LASTNONBLANK(AccountingPeriod[AccountingPeriod], SUM(Financials[Total_PL]))
    )
-- 用最后有效累计值填充空白
RETURN
    COALESCE(YTDSum, LastValidYTD)

方案二:使用DATESYTD(适用于规范日期表)

如果你的AccountingPeriod表包含期间起始日期(如AccountingPeriod[PeriodStartDate]),且会计年度规则符合DATESYTD的参数要求,可以简化公式:

RunningTotalUSD :=
-- 若为自然年度,无需第二个参数;若为自定义会计年度,需指定会计年末(如"6/30"代表财年结束于6月30日)
CALCULATE(
    SUM(Financials[Total_PL]),
    DATESYTD(AccountingPeriod[PeriodStartDate])
)

注意事项

  • 确保AccountingPeriod表是完整的(包含所有需要显示的期间,即使无交易),否则无期间记录的话无法填充累计值。
  • 方案一中的AccountingPeriod[AccountingPeriod]需是可排序的数值或文本(如YYYYMM格式),保证筛选逻辑正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 06:33:17