gpt4 book ai didi

sql-server - hive 中的 rank()

转载 作者:可可西里 更新时间:2023-11-01 14:42:53 26 4
gpt4 key购买 nike

我正在将 SQL Server 存储过程转换为 HiveQL。

我怎样才能转换这样的东西:

SELECT 
p.FirstName, p.LastName,
RANK() OVER (ORDER BY a.PostalCode) AS Rank

最佳答案

我已经看过几次这个用例,有一种方法可以使用 UDF 在 Hive 中执行类似于 RANK() 的操作。

基本上有几个步骤:

  • 使用 DISTRIBUTE BY 将数据分组
  • 使用SORT BY对每组数据进行排序

实际上有a nice article on the topic ,您还可以从 Edward Capriolo here 中找到一些代码.

这是一个在 Hive 中进行排名的示例查询:

ADD JAR p-rank-demo.jar;
CREATE TEMPORARY FUNCTION p_rank AS 'demo.PsuedoRank';

SELECT
category,country,product,sales,rank
FROM (
SELECT
category,country,product,sales,
p_rank(category, country) rank
FROM (
SELECT
category,country,product,
sales
FROM p_rank_demo
DISTRIBUTE BY
category,country
SORT BY
category,country,sales desc) t1) t2
WHERE rank <= 3

在 MySQL 中执行以下查询的等效项:

SELECT
category,country,product,sales,rank
FROM (
SELECT
category,country,product, sales,
rank() over (PARTITION BY category, country ORDER BY sales DESC) rank
FROM p_rank_demo) t
WHERE rank <= 3

关于sql-server - hive 中的 rank(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14219969/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com