这是一个很大的问题。如果无法通过论坛给出具体的解决方案,我正在寻找可能的总体方向,可能的解决方案。我在 BigQuery 中工作,但语法几乎与 SQL 相同,但某些函数除外。我对高级 SQL 比较陌生,我的任务是创建以下报告:
从下表:
报告需要通过 Google Data Studio 呈现,其中无法进行数据建模,因此必须提前在 SQL 中准备数据,然后才能加载到 Data Studio 中,Data Studio 将是可视化/呈现工具。
我的想法是为每个所需的时间段编写一个查询,然后将所有这些查询联合起来,例如,“上周”作为一个时间段的查询将是:
SELECT distinct orderid,
net_revenue,
country,
main_category, sub_cat, sub_sub_cat --there's several nested categories
'last week' as period,
FROM table_orders
join table_order_values
on table_orders.orderid = table_order_values.orderid
full outer join categories as cats
on cats.product_id = table_orders.product_id
join countries
on table_order_values.country = countries.country
and table_order_values.date >
DATE_SUB(DATE_TRUNC(CURRENT_DATE(), WEEK(sunday)), INTERVAL 1 WEEK)
AND table_order_values.date <=
DATE_TRUNC(CURRENT_DATE(), WEEK(sunday))
...在 UNION ALL 之后的不同时期的一堆表格的最终表格看起来像这样:
但是,对于这个最终表,我不知道如何获得每个时期的增长百分比(因此比较月比月或周比周等),或者如何正确计算子类别的收入占总收入的百分比(以及不是每个时期都有一堆声明的变量),甚至更难 - 从主要类别中获得任何子类别的收入百分比,然后还需要按国家/地区过滤......
这甚至可能是要求的方式吗?我是否可以从一开始就以某种方式重组数据,以使这些百分比占总数、主要类别和一段时间内的增长成为可能?
如果有人偶然发现我的问题正在寻找答案,我通过保存一个包含每个时期(月、周等)总计的表格来解决总数的百分比,然后将该表格与上面的数据表连接起来并使用总和(net_revenue) /max(total_revenue) 和该时期的视觉过滤器。这不是最优雅的解决方案,但它允许在嵌套类别中进行一些视觉交互。