我有一个类似下表的Hive表
ID | Value | Timestamp (epoch)| Status
1 2300 1516187739 | Active
1 2500 1516187403 | Stopped
1 1800 1516187450 | Stopped
2 1300 1516187730 | Active
2 1500 1516187780 | Active
。我希望通过查看状态为活动时每个ID的时间戳来获取最新记录。我希望每个ID只有一条记录。所以结果如下表所示。我正在寻找一种在Hive中实现此查询的有效方法。
ID | Value |
1 2300
2 1500
答案 0 :(得分:2)
您可以将row_number()
分析函数用于此目的。
SELECT a.id, a.VALUE
FROM (SELECT id,
VALUE,
ROW_NUMBER () OVER (PARTITION BY id ORDER BY timestamp DESC)
rn
FROM yourtable) a
WHERE rn = 1;