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

如何在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动态时间维度

  1. 创建参数(Parameter):命名为「时间维度选择」,选项设置为「日」「周」「月」。
  2. 创建计算字段「动态时间维度」,公式:
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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 02:40:02