如何在Tableau中基于维度和度量创建季度YoY计算字段?
在Tableau中实现季度同比(YoY)分析的方法
针对你提出的季度同比计算需求——公式为(当前季度收入/往前推4个季度的收入)-1,结合你的数据里quarter_id是连续递增(每季度+1)的特点,我整理了两种直接可行的实现方式:
方法1:用表计算快速实现(推荐)
这种方法适合已经把季度维度(比如quarter_id或对应的季度日期)放到视图里的场景,操作起来最直接:
- 点击顶部菜单栏的「分析」→「创建计算字段」,命名为
季度同比YoY - 输入以下公式:
( SUM([quarter_revenue]) / LOOKUP(SUM([quarter_revenue]), -4) ) - 1
- 简单解释:
LOOKUP函数的作用是按指定偏移量取对应位置的数据,这里-4就代表往前数第4个季度(正好对应你需要的“往前推4个季度”,因为你的quarter_id每季度递增1) - 把这个计算字段拖到视图后,可能需要调整表计算的计算逻辑:
- 右键视图里的
季度同比YoY字段 → 「编辑表计算」 - 在「计算依据」里选择
quarter_id,确保是按照季度ID的顺序来计算偏移量,避免结果出错
- 右键视图里的
方法2:用LOD表达式灵活计算
如果你需要在不依赖视图布局的情况下得到同比值(比如用于筛选、后续计算等场景),可以用FIXED类型的LOD表达式来提前获取前4个季度的收入:
- 先创建一个计算字段
前4季度收入:
{FIXED : SUM(IF [quarter_id] = ATTR([quarter_id]) - 4 THEN [quarter_revenue] END)}
- 解释:
ATTR([quarter_id])会获取当前行的季度ID,然后匹配ID减4的那一行的收入并求和,这样就能得到对应季度的对比值 - 再创建最终的
季度同比YoY计算字段:
( SUM([quarter_revenue]) / [前4季度收入] ) - 1
结果验证
用你给出的示例数据测试一下:
- quarter_id 14(2016Q1)的收入是405,对应前4个季度的quarter_id 10(2015Q1)收入200,计算得
(405/200)-1=1.025,也就是102.5%的同比增长 - quarter_id 15(2016Q2)对应quarter_id 11的430,计算得
(493/430)-1≈0.1465,即14.65%的同比增长
最后,你可以右键视图里的同比字段,选择「设置格式」,把数值改成百分比形式,看起来会更直观。
内容的提问来源于stack exchange,提问作者Zen
相关产品推荐
相关产品推荐

