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
相关产品推荐
相关产品推荐

