Tableau实现月度动态滚动13个月供应商编码唯一计数方案问询
解决Tableau中13个月滚动唯一供应商计数的问题
步骤1:创建年月维度字段
先将发票日期聚合到年月级别,创建计算字段[年月]:
DATETRUNC('month', [Invoice Date])
将此字段拖到行/列货架,设置为「离散」日期类型,确保按年月分组展示。
步骤2:当月唯一供应商计数
直接用Tableau内置函数计算当月唯一供应商数,创建计算字段[当月唯一供应商数]:
COUNTD([Supplier Code])
步骤3:13个月滚动唯一供应商计数
要实现「当前年月往前13个月(含当前月)」的滚动唯一计数,且仅在2020年2月及之后显示数值,创建计算字段[滚动13个月唯一供应商数]:
IF [年月] >= DATEADD('month', 12, {MIN([年月])}) THEN COUNTD( IF [Invoice Date] >= DATEADD('month', -12, [年月]) AND [Invoice Date] <= DATEADD('month', 1, [年月]) - INTERVAL '1 day' THEN [Supplier Code] END ) END
公式解释
{MIN([年月])}:获取数据集最早年月(2019年1月),通过DATEADD('month',12, ...)得到2020年2月,作为滚动计数的起始展示月份。DATEADD('month', -12, [年月]):计算当前年月往前推12个月的日期(滚动窗口起始点),结合当前年月最后一天(DATEADD('month',1,[年月]) - INTERVAL '1 day'),锁定13个月的完整时间范围。COUNTD(...):统计该窗口内出现的唯一供应商编码,自动过滤窗口外的供应商,返回有效范围内的唯一值。
步骤4:构建面积图
- 将
[年月]拖到列货架,设置为离散年月。 - 将
[当月唯一供应商数]和[滚动13个月唯一供应商数]拖到行货架。 - 切换图表类型为「面积图」,调整颜色和标签区分两个指标。
- 公式已通过IF条件过滤2020年2月之前的滚动值,图表会自动隐藏该时段的滚动计数线条。
原方法失效原因
你之前通过「新增供应商累加」的逻辑,仅能统计从起始到当前的累计新增供应商,无法处理供应商在滚动窗口中「消失后再次出现」的场景,导致后续月份的滚动计数仅累加新增值,而非实时计算窗口内的唯一供应商数。上述方法直接针对每个滚动窗口重新统计唯一值,更贴合需求。
内容的提问来源于stack exchange,提问作者Thgiliwt
相关产品推荐
相关产品推荐

