He siguiente tabla en la colmenaColmena conseguir los mejores registros n en el grupo de consulta
identificación del usuario, del nombre de usuario, fácil de dirección, clics, impresiones, página-id, página nombre
I necesita encontrar los 5 mejores usuarios [ID de usuario, nombre de usuario, dirección de usuario] haciendo clic para cada página [page-id, page-name]
Entiendo que necesitamos agrupar primero por [page- id, page-name] y dentro de cada grupo quiero ordenar por [clicks, impresiones] desc y luego emitir solo los primeros 5 usuarios [user-id, user-name, user-address] para cada página pero me resulta difícil construir la consulta.
¿Cómo podemos hacer esto usando HIVE UDF?
Hola Maxime, Lo siento por molestar te gusta esto. También estoy teniendo el problema similar. Publiqué en el SO, pero no obtuve una buena respuesta porque estoy trabajando con Hive y HiveQL es nuevo para mí. [http://stackoverflow.com/questions/11405446/find-10-latest-record-for-each-buyer-id-for-yesterdays-date](http://stackoverflow.com/questions/11405446/find- 10-latest-record-for-each-buyer-id-for-yesterdays-date). Será de gran ayuda para mí. – ferhan
Acabo de poner horas en hacer este trabajo, pero no funcionó. El error es que primero estás clasificando y luego haciendo DISTRIBUIR BY y SORT BY. En su lugar, debe aplicar rango en una consulta externa y usar DISTRIBUIR BY y SORT BY en una consulta interna. Por ejemplo, SELECCIONAR identificador de página, ID de usuario, clics DESDE (SELECCIONAR ID de página, ID de usuario, rango (ID de usuario) como rango, clics DESDE (SELECCIONAR * FROM mytable DISTRIBUIR POR ID de página, ID de usuario CLASIFICAR POR ID de página, ID de usuario, hace clic en DESC) a) b DONDE rango <5 ORDER BY page-id, rank; –
Confirmó que @HimanshuGahlot es correcto. ¡La respuesta tiene un * ERROR *! Debe usar rank() en una consulta externa y usar DISTRIBUTE/SORT BY en la consulta interna. –