Tôi đã theo bảng trong hiveHive nhận hồ sơ n hàng đầu trong nhóm bằng cách truy vấn
sử dụng id, user-name, sử dụng địa chỉ, nhấp chuột, hiển thị, trang-id, trang tên tuổi
tôi cần tìm ra 5 người dùng hàng đầu [id người dùng, tên người dùng, địa chỉ người dùng] theo số nhấp chuột cho mỗi trang [tên trang, tên trang]
Tôi hiểu rằng chúng ta cần phải nhóm đầu tiên theo [trang- id, tên trang] và trong mỗi nhóm tôi muốn orderby [nhấp chuột, hiển thị] desc và sau đó chỉ phát ra 5 người dùng hàng đầu [id người dùng, tên người dùng, địa chỉ người dùng] cho mỗi trang nhưng tôi thấy khó khăn xây dựng truy vấn.
Làm cách nào chúng tôi có thể thực hiện việc này bằng cách sử dụng UDve UDF?
Hi Maxime, Xin lỗi vì làm phiền bạn như thế này. Tôi cũng gặp vấn đề tương tự. Tôi đã đăng trên SO, nhưng không có bất kỳ phản ứng tốt như tôi đang làm việc với Hive và HiveQL là mới đối với tôi. [http://stackoverflow.com/questions/11405446/find-10-latest-record-for-each-buyer-id-for-yesterdays-date](http://stackoverflow.com/questions/11405446/find- 10-mới nhất-ghi-cho-mỗi-người mua-id-cho-yesterdays-ngày). Nó sẽ giúp ích rất nhiều cho tôi. – ferhan
Tôi chỉ cần bỏ ra hàng giờ để thực hiện công việc này nhưng nó không hoạt động. Lỗi là bạn đang xếp hạng đầu tiên và sau đó làm DISTRIBUTE BY và SORT BY. Thay vào đó, bạn nên áp dụng xếp hạng trong truy vấn bên ngoài và sử dụng DISTRIBUTE BY và SORT BY trong truy vấn bên trong. Ví dụ, SELECT page-id, user-id, click FROM (SELECT page-id, user-id, rank (user-id) làm thứ hạng, nhấn FROM (SELECT * FROM mytable DISTRIBUTE BY page-id, user-id SORT THEO page-id, user-id, click DESC) a) b WHERE rank <5 ORDER BY page-id, rank; –
Xác nhận rằng @HimanshuGahlot là chính xác. Câu trả lời có * BUG *! Bạn phải sử dụng thứ hạng() trong truy vấn bên ngoài và sử dụng DISTRIBUTE/SORT BY trong truy vấn bên trong! –