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

不使用窗口函数实现月度滚动年度离职人数累计求和

解决月度离职数据的滚动12个月累计计算问题

问题根源

你之前的Fixed LOD表达式无效,是因为{FIXED [Date]: ...}会把计算范围限制在单个月份内。你的IF条件中,MIN([Date])就是当前月份的日期,所以条件永远成立,最终返回的只是当前月的[All Terms],自然无法得到跨12个月的累计值。

可行解决方案

方案1:窗口函数(最直观)

直接用Tableau的窗口函数,指定滚动12个月的范围求和:

SUM([All Terms]) OVER (
  ORDER BY DATE_TRUNC('month', [Date]) 
  RANGE BETWEEN 11 PRECEDING AND CURRENT ROW
)
  • 逻辑:按月份升序排序,计算当前行及之前11行(共12个月)的离职数总和
  • 注意:需确保视图中[Date]字段已按月份升序排列

方案2:表计算法

通过累计总和差值实现滚动计算:

RUNNING_SUM([All Terms]) - RUNNING_SUM(LAG([All Terms], 12))
  • 逻辑:当前所有月份的累计总和,减去12个月前的累计总和,结果就是最近12个月的总数
  • 注意:同样需要视图按月份升序排列,且数据需包含至少12个月的历史数据

方案3:灵活LOD表达式(不依赖视图排序)

如果需要不依赖视图排序的计算,可使用如下LOD:

SUM(
  {FIXED : 
    SUM(
      IF DATE_TRUNC('month', [Date]) >= DATEADD('month', -11, DATE_TRUNC('month', [当前行日期])) 
      AND DATE_TRUNC('month', [Date]) <= DATE_TRUNC('month', [当前行日期]) 
      THEN [All Terms] 
      END
    )
  }
)
  • 替换[当前行日期]为你视图中用于标记月份的日期字段(比如每个月的第一天/最后一天)
  • 逻辑:针对每个行的月份,计算过去11个月到当前月的所有离职数总和

使用步骤

  1. 新建计算字段,复制上述任意一种表达式
  2. 将该计算字段拖入视图,替换原有的单月离职数字段即可得到滚动累计值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 01:35:05