如何在Looker Studio中构建可切换时间维度的多状态支付统计图表?
问题描述
给定数据表:
day | payment_id | status --------------------------------- Jan 1 | 1 | processing Jan 1 | 2 | processing Jan 2 | 1 | completed Jan 2 | 2 | processing
该表包含day、payment_id、status字段,同一payment_id在不同日期可能对应不同status(如payment 1在两天的状态不同)。需在Looker Studio中制作堆叠柱状图,实现以下效果:
- 支持切换时间维度(日、周、月等)
- 日维度下:1月1日显示2个processing状态的支付,1月2日显示1个processing和1个completed状态的支付;
- 周维度下:需取每个payment的最新status,统计为1个processing和1个completed状态的支付。
疑问:Looker Studio无max_by函数,是否可实现该多维度图表?若可行,如何正确聚合数据?
可行方案:数据预处理+Looker Studio计算字段组合实现
步骤1:数据源层预处理(标记最新状态记录)
在数据源(如SQL查询、BigQuery等)中,为每条记录添加是否为对应payment_id最新状态的标记。以SQL为例:
WITH ranked_payments AS ( SELECT day, payment_id, status, ROW_NUMBER() OVER (PARTITION BY payment_id ORDER BY day DESC) AS rn FROM your_table_name ) SELECT day, payment_id, status, CASE WHEN rn = 1 THEN 1 ELSE 0 END AS is_latest_status FROM ranked_payments
新增的is_latest_status字段,值为1表示该记录是对应支付ID的最新状态。
步骤2:配置Looker Studio动态时间维度
- 创建参数(Parameter):命名为「时间维度选择」,选项设置为「日」「周」「月」。
- 创建计算字段「动态时间维度」,公式:
CASE WHEN @时间维度选择 = '日' THEN DATE(day) WHEN @时间维度选择 = '周' THEN WEEK(day) WHEN @时间维度选择 = '月' THEN MONTH(day) END
步骤3:创建状态统计计算字段
创建计算字段「状态计数」,区分不同维度的统计逻辑:
CASE -- 日维度:统计当天所有支付记录 WHEN @时间维度选择 = '日' THEN 1 -- 周/月维度:仅统计最新状态的记录 ELSE is_latest_status END
步骤4:配置堆叠柱状图
- 将「动态时间维度」拖入「维度」栏
- 将
status拖入「维度」栏(用于堆叠区分状态) - 将「状态计数」拖入「指标」栏,聚合方式选择「求和」
- 将「时间维度选择」参数添加为仪表盘控件,实现维度切换
效果验证
- 日维度:求和后的「状态计数」会统计当天所有支付记录,符合需求;
- 周/月维度:求和后的「状态计数」仅统计每个支付ID的最新状态记录,每个支付ID仅被计数一次,满足取最新状态统计的要求。
内容的提问来源于stack exchange,提问作者Oleg Ivanytskyi
相关产品推荐
相关产品推荐

