Hive SQL 开窗函数判断最近24小时数据一致性
假设有一个表格名为table1,其中有三个字段:id、status、time。
以下是按时间做开窗函数,并判断最近24小时内数据是否一致的Hive SQL语句:
SELECT id, status, time,
CASE
WHEN COUNT(DISTINCT status) OVER (PARTITION BY id ORDER BY time RANGE BETWEEN INTERVAL '24' HOUR PRECEDING AND CURRENT ROW) = 1 THEN '一致'
ELSE '不一致'
END AS consistency
FROM table1
ORDER BY id, time;
解释:
-
使用COUNT和DISTINCT函数计算每个id在最近24小时内不同的status数量,OVER语句指定了开窗函数的PARTITION BY和RANGE条件。
-
判断不同的status数量是否为1,如果是,则说明最近24小时内数据一致,否则不一致。
-
使用CASE语句将判断结果转换为文本,一致为'一致',不一致为'不一致'。
-
对结果按照id和time进行排序。
原文地址: https://www.cveoy.top/t/topic/m1p9 著作权归作者所有。请勿转载和采集!