如何使用 rank 函数获取 hive 中的最新记录
Posted
技术标签:
【中文标题】如何使用 rank 函数获取 hive 中的最新记录【英文标题】:How to get the latest records in hive using rank function 【发布时间】:2017-09-19 17:26:36 【问题描述】:我在 hive 中有下表,其中包含列 id、名称和时间戳:
根据下面的时间戳应该是作为最新记录的输出:
【问题讨论】:
戈登是对的。如果您想获取每个 id 的最新信息,则只需要 rank 或 row_number 【参考方案1】:您不需要排名。您的输出描述为:
select t.*
from t
order by t.transaction_time desc
limit 3;
编辑:
哦,你想要rank()
或dense_rank()
:
select t.*
from (select t.*,
dense_rank() over (order by t.transaction_time desc) as seqnum
from t
) t
where seqnum = 1;
【讨论】:
感谢您的询问,但我如何应用限制 3?因为我不知道在那个特定时间输入了多少条记录。可能是 3 或 30 条记录。【参考方案2】:您可以为此使用rank
或row_number
:
select *
from (
select t.*,
row_number() over (
partition by name
order by transaction_time desc
) as seq
from your_table t
) t
where seq = 1;
【讨论】:
以上是关于如何使用 rank 函数获取 hive 中的最新记录的主要内容,如果未能解决你的问题,请参考以下文章