tôi cần để xếp hạng hàng bằng cách phân vùng (hoặc nhóm), tức là nếu bảng nguồn của tôi là:Nhận số tuần tự của một hàng (cấp bậc) trong một phân vùng mà không sử dụng ROW_NUMBER() OVER chức năng
NAME PRICE
---- -----
AAA 1.59
AAA 2.00
AAA 0.75
BBB 3.48
BBB 2.19
BBB 0.99
BBB 2.50
tôi sẽ thích để có được bảng mục tiêu:
RANK NAME PRICE
---- ---- -----
1 AAA 0.75
2 AAA 1.59
3 AAA 2.00
1 BBB 0.99
2 BBB 2.19
3 BBB 2.50
4 BBB 3.48
Thông thường tôi sẽ sử dụng ROW_NUMBER() OVER
chức năng, vì vậy trong Apache Hive nó sẽ là:
select
row_number() over (partition by NAME order by PRICE) as RANK,
NAME,
PRICE
from
MY_TABLE
;
Thật không may Cloudera Impala không hỗ trợ (tại thời điểm này) ROW_NUMBER() OVER
chức năng, vì vậy tôi đang tìm một cách giải quyết khác. Tốt hơn là không sử dụng UDAF, vì sẽ rất khó thuyết phục để triển khai nó vào máy chủ.
Cảm ơn sự giúp đỡ của bạn.
phân tích chức năng cửa sổ là ưu tiên hàng đầu và đang phát triển. Tiếp tục theo dõi bản phát hành sắp tới, thêm chức năng này như là một phần của lộ trình cho Impala 2.0. – Matt