如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期
Posted
技术标签:
【中文标题】如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期【英文标题】:How to get Continuous date in Presto with start date in one column and end date in another column 【发布时间】:2020-10-20 19:18:44 【问题描述】:下面是 Presto 中 Raw 表的样子
我想创建一个新表,其中每个项目 ID 的连续日期应该有一个开始日期和结束日期,只要它在 presto 中是连续的
下面是示例表的样子
【问题讨论】:
您使用的是 Hive 还是 Presto?它们不一样。 【参考方案1】:这是一个孤岛问题。最简单的方法是减去一个序列得到一个常数日期——然后聚合:
select id, min(datefield), max(datefield)
from (select t.*, row_number() over (partition by id order by datefield) as seqnum
from t
) t
group by id, (datefield - seqnum * interval '1 day');
窗口函数因数据库而异。逻辑相同,但从datefield
中减去seqnum
天数的语法可能会有所不同。
【讨论】:
能否请您帮助我了解您为什么在 group by 中使用 (datefield - seqnum * interval '1 day') 并提供有关如何计算的示例 @rpunk21 。 . .运行代码select t.*, (datefield - seqnum * interval '1 day') from t order by id, datefield
,你应该就能看到了。以上是关于如何在 Presto 中获取连续日期,其中一列中的开始日期和另一列中的结束日期的主要内容,如果未能解决你的问题,请参考以下文章