我在配置单元表name-publish中有以下数据集
n、 b.发布中可能有重复记录
DATE |HOUR|SOURCE|COL_TIMESTAMP |ID
20200101|14 |A |2020-01-01 14:18:53.016 GMT|ID_111
20200101|14 |A |2020-01-01 14:18:53.012 GMT|ID_222
20200101|14 |A |2020-01-01 14:18:53.016 GMT|ID_111
20200101|14 |A |2020-01-01 14:18:53.019 GMT|ID_333
20200101|15 |C |2020-01-01 15:18:53.016 GMT|ID_444
20200102|00 |A |2020-01-01 15:18:53.016 GMT|ID_444
我想根据特定的日期、时间和来源生成以下输出,例如( DATE=20200101
& HOUR=14
& SOURCE=A
),输出应为:
DATE |HOUR|SOURCE|MIN_TIMESTAMP |START_ID|MAX_TIMESTAMP |END_ID|RECORD_CNT
20200101|14 |A |2020-01-01 14:18:53.012 GMT|ID_222 |2020-01-01 14:18:53.019 GMT|ID_333|3
n、 b.时间戳末尾有“gmt”。我还尝试使用spark java代码运行查询。当数据量很大时,请建议一个能显示良好性能的配置单元查询。
2条答案
按热度按时间zzwlnbp81#
使用分析函数获取开始\u id和最后\u id,然后聚合:
结果:
qrjkbowd2#
您应该能够使用子查询来确定给定小时的最小和最大时间戳以及不同行的计数,然后将其连接回主表以获取
id
这些时间的值:只要你有索引就行
(DATE, HOUR, SOURCE)
这应该表现得很好。