Spark sql 每组前 n
Spark sql top n per group
如何在 spark-sql
中获得每个组的前 n 名(比如说前 10 名或前 3 名)?
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 提供一般SQL 教程。但是spark并没有在where子句中实现子查询。
您可以使用 Spark 1.4 中添加的 window 函数特性
假设我们有一个 productRevenue table,如下所示。
每个品类中最畅销和第二畅销的产品是什么的答案如下
SELECT product,category,revenue FROM
(SELECT product,category,revenue,dense_rank()
OVER (PARTITION BY category ORDER BY revenue DESC) as rank
FROM productRevenue) tmp
WHERE rank <= 2
这会给你想要的结果
如何在 spark-sql
中获得每个组的前 n 名(比如说前 10 名或前 3 名)?
http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/ 提供一般SQL 教程。但是spark并没有在where子句中实现子查询。
您可以使用 Spark 1.4 中添加的 window 函数特性
假设我们有一个 productRevenue table,如下所示。
每个品类中最畅销和第二畅销的产品是什么的答案如下
SELECT product,category,revenue FROM
(SELECT product,category,revenue,dense_rank()
OVER (PARTITION BY category ORDER BY revenue DESC) as rank
FROM productRevenue) tmp
WHERE rank <= 2
这会给你想要的结果