我有一个简单的表格:
UserID EventTimestamp
... ...
用户可以有任意数量的事件(从无到很多)。我需要运行一个 HiveQL 查询来提取第三个事件的时间戳(按升序)。少于 3 个事件应导致 null。
是否有不需要使用 UDF 模拟 rank() 的解决方案?
最佳答案
如果你可以使用 MySQL 查询,你可以使用这样的东西:
SELECT
e1.UserID,
MIN(e3.EventTimestamp) ThirdTimestamp
FROM
Events e1 LEFT JOIN Events e2
ON e1.UserID=e2.UserID and e1.EventTimestamp<e2.EventTimestamp
LEFT JOIN Events e3
ON e1.UserID=e3.UserID and e2.EventTimestamp<e3.EventTimestamp
GROUP BY
UserID
fiddle here .
关于mysql - HiveQL:在一对多表中查找第 N 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16279665/