试图通过rank函数在hive sql中执行动态限制。在HiveQL中使用RANK,动态限制
问题: 我想使用表A的限制来创建输出。下面的例子。
表A:
ID | Limit
------------
123 | 1
456 | 3
789 | 2
表B:
ID | User
-------
123 | ABC
123 | DEF
123 | GHI
456 | JKL
456 | MNO
789 | PQR
789 | RST
OUTPUT:
ID | User
----------
123 | ABC
456 | JKL
456 | MNO
789 | PQR
789 | RST
可惜你不能d o hive sql中的动态限制(据我所知)。所以我试图使用排名。我当前的查询看起来是这样的:
SELECT c.id, c.users, c.rnk
FROM (
SELECT b.id, b.user, a.limit, rank() over (ORDER BY b.id DESC) as rnk
FROM a JOIN b
ON a.id = b.id
) c
WHERE rnk < c.limit;
目前我得到的错误:
ParseException line 3:9 cannot recognize input near 'rank' '(' ')' in from source 0
任何想法,为什么?或者更好的方法?
谢谢!
在表b中没有被称为限制的列,并且在表a中没有列用户 –
修复了......对不起,只是一个错字。仍然是同样的问题。 – ChrisD
为什么没有'分区'? 'rank()通过b.id ORDER BY b.id DESC'PARTITION'' – leftjoin