La ruche: SÉLECTIONNER en tant QUE GROUPE et PAR
J'ai une Requête de la Ruche comme
SELECT Year, Month, Day, Hours, Minutes,
cast((cast(Seconds as int)/15) as int)*15
AS secondMod, Count(*) AS PerCount FROM LoggerTable
GROUP BY Year, Month, Day, Hours, Minutes, secondMod
ORDER BY PerCount;
la requête ci-dessus échoue avec une erreur
A ÉCHOUÉ: Erreur dans l'analyse sémantique: ligne 1:175 Invalide Alias de la Table ou de la Colonne de Référence secondMod
'LoggerTable' est un Tableau de la Ruche avec toutes les colonnes de type chaîne de caractères.
Aucune solution de contournement pour ce problème?
OriginalL'auteur Srinivas | 2012-09-26
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
SELECT
et que vous voulez utiliser dans votreWHERE
,GROUP BY
etORDER BY
. Il y a un peu d'une solution de contournement ici stackoverflow.com/questions/26028767/...OriginalL'auteur Alexey Bychkov
Dans la Ruche 0.11.0 et, plus tard, les colonnes peuvent être spécifiés par position si
hive.groupby.orderby.position.alias
est fixé àtrue
.S'il vous plaît confirmer si la requête suivante qui fonctionne pour vous.
SET hive.groupby.orderby.position.alias=true; SELECT device ,COUNT ( DISTINCT from_user ) AS users_sharing FROM <db>.<table> GROUP BY 1 order by 2 desc limit 10
Et j'ai eu l'erreur suivante:FAILED: SemanticException [Error 10004]: Line 4:21 Invalid table alias or column reference 'from_user': (possible column names are: device, users_sharing)
Désolé pour le format. Je ne pouvais pas comprendre comment poster une requête avec l'indentation préservé.
Vérifiez que votre
from_user
alias de la table ou de la colonne de référence existe. Peut-être différente de l'orthographe, de fautes de frappe. Une solution possible est de briser votre requête en deux parties:hive.groupby.orderby.position.alias=true; SELECT res.device, res.users_sharing FROM (SELECT device, COUNT ( DISTINCT from_user ) AS users_sharing FROM <db>.<table> GROUP BY 1 limit 10; ) AS res ORDER BY res.users_sharing
Laissez-nous savoir comment vous résoudre votre problème!Il n'y a pas de faute de frappe dans le nom de col. J'ai essayé ta suggestion de la séparation d'un groupe par un sous-requête et a fonctionné!! Donc, il y a une solution, mais je me demande pourquoi la requête initiale ne serait pas travailler avec group by et order by side-by-side.
Il semble que la Ruche ne permettent pas de fonction d'agrégation dans l'ORDRE. Vous pouvez essayer d'utiliser votre requête initiale en substituant
ORDER BY 2
avecORDER BY users_sharing
OriginalL'auteur rafaelvalle