假设需要判断的数据表名为 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录