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

如何在Tableau中计算并展示随时间变化的90天活跃用户数

解决Tableau滚动90天活跃用户数的动态计算问题

你的问题出在原计算字段用了固定的today(),导致窗口始终是「今天往前90天」,无法随图表上的日期维度动态调整。要实现每个日期点对应的过去90天活跃用户数(即滚动窗口计算),可以用以下两种方法:

方法一:表计算(滑动窗口)

这是最直接的实现方式,适合按日期粒度(天/周/月)展示趋势:

  1. 创建基础标记字段
    创建计算字段有活动的用户ID:

    IF activity > 0 THEN cust_id END
    

    作用是标记当天有活动的用户ID,无活动的用户返回空值。

  2. 搭建基础图表

    • 将日期字段dt拖到行,设置为连续的日期粒度(比如「天」,根据需求调整)
    • 将有活动的用户ID拖到列,选择「度量」→「计数(不同)」,此时得到的是当日活跃用户数
  3. 添加滚动窗口计算

    • 右键列上的「计数(不同)(有活动的用户ID)」→「添加表计算」
    • 在弹出的设置面板中:
      • 计算类型:选择「窗口计算」
      • 聚合函数:选择「计数(不同)」
      • 窗口范围:选择「从当前行的前89行到当前行」(包含当前日期在内共90天,前89天+当天=90天)
      • 计算依据:选择dt(确保按日期升序计算)

    设置完成后,图表就会显示每个日期点对应的过去90天累计活跃用户数。

方法二:LOD表达式结合表计算(复杂场景适配)

如果需要更灵活的维度拆分(比如按地区/产品分组计算滚动活跃用户),可以用LOD+表计算的组合:

  1. 创建滚动窗口活跃用户计算字段
    创建计算字段滚动90天活跃用户数:

    COUNTD(
      { FIXED cust_id :
        MAX(IF dt >= DATEADD('day', -89, [dt]) AND dt <= [dt] AND activity > 0 THEN cust_id END)
      }
    )
    

    这里用FIXED cust_id固定用户维度,判断该用户在当前日期往前90天内是否有活动,最后用COUNTD去重统计符合条件的用户数。

  2. 调整图表维度
    将dt拖到行,滚动90天活跃用户数拖到列,设置好日期粒度即可。

注意事项

  • 如果存在日期缺失(比如某些天没有用户活动数据),需要在Tableau中设置日期轴为「显示缺失值」,否则滚动窗口会计算错误(右键日期轴→「显示缺失值」)
  • 确保dt字段的类型是「日期」,而非字符串,否则无法正确计算日期范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 15:15:31