如何在Google Data Studio中计算列间环比增长率?
在Google Data Studio中计算月度环比增长率
问题背景
现有如下数据集:
| category | February 2022 | March 2022 | April 2022 |
|---|---|---|---|
| Gold | 1457 | 1627 | 1890 |
| Silver | 1962 | 2415 | 3036 |
| Bronze | 5683 | 7520 | 10169 |
需要计算每个品类每月相对上月的增长率,比如Gold 2022年3月的增长率为:
(1627 - 1457)/1457 = 11.67%
预期结果如下:
| category | February 2022 | March 2022 | April 2022 |
|---|---|---|---|
| Gold | - | 11.67% | 16.16% |
| Silver | - | 23.09% | 25.71% |
| Bronze | - | 32.32% | 35.23% |
之前尝试对比计算中的「与总计的百分比差异」未成功,希望直接在Data Studio内实现,避免硬编码。
解决方案步骤
1. 转换数据格式(宽表转长表)
Data Studio的时间序列计算更适配长表结构,需先将原宽表转换为长表:
- 新表包含三列:
category、month、value - 转换后数据示例:
| category | month | value |
|---|---|---|
| Gold | February 2022 | 1457 |
| Gold | March 2022 | 1627 |
| Gold | April 2022 | 1890 |
| Silver | February 2022 | 1962 |
可在Google Sheets中通过「数据透视表逆透视」或QUERY函数完成转换,之后重新连接到Data Studio。
2. 创建环比增长率计算字段
连接转换后的长表数据源后,创建计算字段:
- 进入数据源编辑界面,点击「添加字段」
- 命名字段(如
月度环比增长率) - 输入计算公式:
(VALUE - LAG(VALUE, 1) OVER (PARTITION BY category ORDER BY month)) / LAG(VALUE, 1) OVER (PARTITION BY category ORDER BY month)
LAG(VALUE,1):获取当前品类上一个月的数值PARTITION BY category:按品类分组计算ORDER BY month:确保按月份顺序取值
3. 配置可视化组件
- 添加表格组件,维度选择
category和month,指标选择刚创建的月度环比增长率 - 调整指标格式:设置为百分比,保留两位小数
- 如需还原宽表列展示形式,使用数据透视表:
- 行维度:
category - 列维度:
month - 值:
月度环比增长率 - 第一个月份无上月数据,可修改计算字段将空值替换为
-:
注:添加判断后字段变为文本类型,需单独处理百分比格式,或在表格中设置空值显示为CASE WHEN LAG(VALUE, 1) OVER (PARTITION BY category ORDER BY month) IS NULL THEN '-' ELSE (VALUE - LAG(VALUE, 1) OVER (PARTITION BY category ORDER BY month)) / LAG(VALUE, 1) OVER (PARTITION BY category ORDER BY month) END-。
- 行维度:
关键说明
- 原宽表格式不适合序列对比计算,转长表是核心前提
LAG()窗口函数是实现环比的关键,可按分组和排序逻辑获取前一行数据- 「与总计的百分比差异」是和总计值对比,无法实现上月环比,因此不适用
内容的提问来源于stack exchange,提问作者Bale Rudal
相关产品推荐
相关产品推荐

