Presto SQL - 按所有日期/组组合展开



我有一个包含日期、组和值的表格:

date         group   subgroup value
2018-01-01   A       1        20
2018-01-04   A       1        70
2018-01-06   A       1        80

我想像这样填写组/子组组合缺少的日期:

date         group   subgroup value
2018-01-01   A       1        20
2018-01-02   A       1        0
2018-01-03   A       1        0
2018-01-04   A       1        70
2018-01-05   A       1        0
2018-01-06   A       1        80

一种方法是交叉连接到具有一系列日期的表,然后左连接回原始表,但是,我想避免这样做,因为我有大量组合都具有不同的最小和最大日期,这种类型的解决方案将是相当"非性能"。

如果你想为每个组/子组组合使用不同的序列,那么这很棘手。

但是,在PrestoDB中,您可以使用几乎和generate_series()一样方便的sequence()unnest()(好吧,不是真的,但它们做同样的事情(。

查询将如下所示:

select gs.group, gs.subgroup, d.dte, coalesce(t.value, 0)
from (select group, subgroup, min(date) as mind, max(date) as maxd,
sequence(min(date), max(date)) as date_arr
from t
group by group, subgroup
) gs cross join
unnest(date_arr) d(dte) left join
t
on t.group = gs.grp and t.subgroup = gs.subgroup and t.date = d.dte
order by gs.group, gs.subgroup, d.dte;

相关内容

  • 没有找到相关文章

最新更新