所有,我有一个要求,以获得最低和最高日期在Hive的一套记录。我的数据看起来像这样。
Key start_date end_date
---- ---------- ---------
111 01-01-2017 06-30-2017
111 07-01-2017 07-31-2017
111 09-01-2017 09-30-2017
111 10-01-2017 10-20-2017
111 11-01-2017 11-30-2017
我所期望的是
key start_date end_date
--- --------- --------
111 01-01-2017 07-31-2017
111 09-01-2017 10-20-2017
111 11-01-2017 11-30-2017
基本上,每当有一个突破的日期范围,我需要写一个新的记录。
我试图获取结束日期和开始日期之间的日期差,如果它大于1,我将把它标记为一个新记录。但是,我不确定在这之后如何分割记录。任何帮助或指导都将不胜感激。
预期结果
key start_date end_date
111 01-01-2017 07-31-2017
111 09-01-2017 10-20-2017
111 11-01-2017 11-30-2017
1条答案
按热度按时间zz2j4svz1#
这是一种缺口和孤岛问题。你需要确定“孤岛”存在的地方。假设时间段是相邻的(如您的示例中所示),您可以使用
join
或者exists
:可以调整此逻辑以处理重叠,但您的数据似乎不需要这样做。