試圖通過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