【发布时间】:2019-11-02 03:42:17
【问题描述】:
我有三个事实表
预算:类别、商品、预算时间
实际:类别、商品、日期、实际时间
基线:类别、商品、日期、预测时间
我想编写一个查询来返回预算小时数、实际小时数、按类别分组的预测小时数和按日期过滤的商品的总和。
请注意这三个事实具有不同级别的细节,为简单起见,我删除了另一个不常见的维度 目前我在 BigQuery 的 Datastudio 中使用此查询
with t0 as ( select category, commodity FROM `testing-bi-engine.starschema.budget`
union distinct
select category, commodity FROM `testing-bi-engine.starschema.actual`
union distinct
select category, commodity FROM `testing-bi-engine.starschema.baseline`)
SELECT t0.category, t0.commodity , sum(t2.actualhours) as actualhours , sum(t3.budgethours) as budgethours , sum(t4.forecast) as forecasthours FROM t0
left outer join
(SELECT category, commodity , sum(actualhours) as actualhours FROM `testing-bi-engine.starschema.actual`
WHERE date <= PARSE_DATE('%Y%m%d', @DS_END_DATE)
group by category, commodity) t2
on t0.category= t2.category and t0.commodity= t2.commodity
left outer join
(SELECT category, commodity , sum(budgethours) as budgethours FROM `testing-bi-engine.starschema.budget`
group by category, commodity) t3
on t0.category= t3.category and t0.commodity= t3.commodity
left outer join
(SELECT category, commodity , sum(forecast) as forecast FROM `testing-bi-engine.starschema.baseline`
WHERE date <= PARSE_DATE('%Y%m%d', @DS_END_DATE)
group by category, commodity) t4
on t0.category= t4.category and t0.commodity= t4.commodity
group by t0.category, t0.commodity
我的问题是有更好的方法来编写这个查询吗?
【问题讨论】:
标签: google-bigquery google-data-studio