Hive SQL 开窗函数判断最近24小时数据一致性
假设需要判断的数据表名为 table1,有两个字段 id 和 value,其中 id 为字符串类型,value 为整型,需要按照时间字段 time 做开窗函数,判断最近24小时内数据是否一致,可以使用以下 Hive SQL 语句:
SELECT id,
value,
time,
COUNT(DISTINCT value) OVER (PARTITION BY id ORDER BY time RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW) AS cnt
FROM table1;
解释:
- PARTITION BY id:按照 id 字段进行分区,对每个 id 分别做开窗函数;
- ORDER BY time:按照时间字段 time 进行排序;
- RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW:定义时间窗口为当前行和前 24 小时内的数据;
- COUNT(DISTINCT value) OVER:对每个分区内的数据进行计数,并排除重复值。
最终输出的结果中,cnt 列表示最近 24 小时内某个 id 对应的 value 的不重复数量,如果 cnt 为 1,则说明最近 24 小时内该 id 对应的 value 全部相同。
原文地址: https://www.cveoy.top/t/topic/m1qu 著作权归作者所有。请勿转载和采集!