考虑以下示例表:
day | payment_id | status
---------------------------------
Jan 1 | 1 | processing
Jan 1 | 2 | processing
Jan 2 | 1 | completed
Jan 2 | 2 | processing
如您所见,它由
day
、payment_id
和 status
组成。每笔付款可以在多天内以不同的状态出现(例如,下表中的付款 1 在不同的两天有不同的状态)。
我需要做的是在 Looker Studio(Google Data Studio)中构建一个表格,这是一个简单的堆积条形图,显示随时间变化的不同状态的付款数量。每天或每周执行此操作很容易,但是当我需要创建一个图表时,问题就出现了,您可以在其中切换不同的时间段(天、周、月等)
例如,对于日线图,1 月 1 日将显示 2 笔状态为
processing
的付款,而 1 月 2 日将显示 1 笔状态为 processing
的付款和 1 笔状态为 completed
的付款。
另一方面,对于周图表,整周它只会显示 1 笔状态为
processing
的付款和 1 笔状态为 completed
的付款。
所以对于每周图表来说,我需要获取每笔付款的最新状态。类似于
max_by
的功能,但 Looker Studio 中不存在。
是否可以创建这样一个多维度(天、周、月)的图表?如果是这样,我如何正确聚合数据?
基于OP中的示例表:
您可以创建一个参数供用户选择日期间隔
parameter: date_interval_param {
allowed_value: {
label: "Day"
value: "day"
}
allowed_value: {
label: "Week"
value: "week"
}
allowed_value: {
label: "Month"
value: "month"
}
allowed_value: {
label: "Quarter"
value: "quarter"
}
allowed_value: {
label: "Year"
value: "year"
}
}
然后有一个根据该参数值更新的维度并使用现有的 Looker 时间范围选项
dimension_group: day {
type: time
sql: cast(${TABLE}.day as timestamp) ;; ## field based on sample table in OP
}
dimension: date_interval_field_dash {
sql:
{% if date_interval_param._is_filtered %}
{% if date_interval_param._parameter_value == "'year'" %}
${day_year}
{% elsif date_interval_param._parameter_value == "'quarter'" %}
${day_quarter}
{% elsif date_interval_param._parameter_value == "'month'" %}
${day_month}
{% elsif date_interval_param._parameter_value == "'week'" %}
${day_week}
{% elsif date_interval_param._parameter_value == "'day'" %}
${day_date}
{% endif %}
{% else %}
YOU HAVE TO SELECT "DATE INTERVAL OPTIONS" FILTER
{% endif %}
;;
}
如果您在探索可视化中引用
date_interval_field_dash
作为维度,它将根据用户选择的间隔进行更新。
这比尝试维护包含预聚合间隔选项的表更少冗余且更灵活