Je voudrais agréger une colonne sur plusieurs dimensions différentes. Je pense que GOUPING SETS serait approprié à mon problème, mais je ne peux pas comprendre comment transformer/remodeler la table résultante de GROUPING SETS.Comment modifier les données après GROUPING SETS dans Hive?
Ceci est ma requête GROUPING SETS:
select date, dim1, dim2, dim3, sum(value) as sum_value
from table
grouping by date, dim1, dim2, dim3
grouping sets ((date, dim1), (date, dim2), (date, dim3))
La requête se traduirait par une table comme ceci:
date, dim1, dim2, dim3, sum_value
2017-01-01, A, NULL, NULL, [value_A]
2017-01-01, B, NULL, NULL, [value_B]
2017-01-01, NULL, C, NULL, [value_C]
2017-01-01, NULL, D, NULL, [value_D]
2017-01-01, NULL, NULL, E, [value_E]
2017-01-01, NULL, NULL, F, [value_F]
Mais ce que je vraiment besoin est une table comme ceci:
date, dim, factor, sum_value
2017-01-01, dim1, A, [value_A]
2017-01-01, dim1, B, [value_B]
2017-01-01, dim2, C, [value_C]
2017-01-01, dim2, D, [value_D]
2017-01-01, dim3, E, [value_E]
2017-01-01, dim3, F, [value_F]
Le nombre réel de dimensions est bien supérieur à 3, donc ce ne serait pas une bonne idée de e requête Existe-t-il un moyen de remodeler la table à partir d'ensembles de regroupement ou d'autres méthodes d'agrégation pour obtenir la table souhaitée?
Merci!
S'il vous plaît ajouter un échantillon de données complète, y compris les résultats requis –