无法在HiveQL中解析PARTITION BY

问题描述

enter image description here

似乎我的版本已经过时,并且不支持ROW_NUMBER(),PARTITION BY和OVER()。有sql替代方法吗?

编辑:我正在使用Hive 0.10。窗口功能仅在{1} {1}以后的{1}中可用。

解决方法

如果您的Hive版本不支持窗口功能,则可以使用相关子查询来模拟row_number()

select brand,name,price,1 + (select count(*) from products p1 where p1.brand = p.brand and p1.price > p.price) rn
from products p

实际上,这是模拟rank(),而不是row_number()-除非您对相同品牌的产品有重复的价格,否则结果是相同的。

,

在RDBMS SQL中,您可以使用以下查询:

WITH CTE AS  (
  SELECT 0 AS DIST 
  UNION ALL
  SELECT DIST+1 FROM CTE WHERE DIST<=1000
  )
  SELECT * FROM CTE ;

不确定它是否适用于HQL。在Hive中试用,让我知道