2012-09-26 22 views
8

Mam kwerendy Hive jakHive: SELECT AS i GROUP BY

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; 

powyższe kwerenda nie powiedzie się z powodu błędu

FAILED: Error in semantic analysis: line 1:175 Invalid Table Alias or Column Reference secondMod

'LoggerTable' jest ulu tabela ze wszystkimi kolumnami typu string .

Jakiekolwiek obejście tego problemu?

Odpowiedz

12

Spróbuj tego:

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, 
    cast((cast(Seconds as int)/15) as int)*15 
ORDER BY PerCount; 
+0

Jest to ogromny problem, jeśli chcesz zdefiniować bardzo skomplikowany "SELECT" i chcesz go użyć w swoich "WHERE", "GROUP BY" i "ORDER BY". Istnieje pewne obejście problemu http://stackoverflow.com/questions/26028767/why-cant-hive-recognize-alias-named-in-select-part – ubershmekel

3

W Ulu 0.11.0 i później, kolumny mogą być określone przez pozycję jeśli hive.groupby.orderby.position.alias jest ustawiony na true. Proszę sprawdzić, czy następujące zapytanie działa dla Ciebie.

SET hive.groupby.orderby.position.alias=true; 
SELECT Year 
     ,Month 
     ,Day 
     ,Hours 
     ,Minutes 
     ,cast((cast(Seconds as int)/15) as int)*15 AS secondMod 
     ,count(*) AS PerCount 
FROM LoggerTable 
GROUP BY 1, 2, 3, 4, 5, 6 
ORDER BY 7; 
+0

Próbowałem tego, ale działałoby to tylko dla grupy przez . Zapytanie nie powiedzie się, gdy próbuję zamówienia według. Czy masz jakieś przemyślenia, dlaczego tak się stało? Moje zapytanie wygląda następująco: 'SET hive.groupby.orderby.position.alias = true; Urządzenie SELECT, COUNT (DISTINCT from_user) AS users_sharing FROM .

GROUP BY 1 zamówienie 2 limitami desc 10' Wystąpił następujący błąd: 'FAILED: SemanticException [Błąd 10004]: Wiersz 4:21 Nieprawidłowy alias tabeli lub odwołanie do kolumny 'from_user': (możliwe nazwy kolumn to: device , users_sharing) ' –

+0

Przepraszamy za format. Nie mogłem wymyślić, jak opublikować zapytanie z zachowanym wcięciem. –

+0

Potwierdź, że istnieje alias tabeli lub odwołanie do kolumny 'from_user'. Może inna pisownia, literówka. Możliwym rozwiązaniem jest rozbicie zapytania na dwie części: 'hive.groupby.orderby.position.alias = true; SELECT res.device, res.users_sharing (Z wyboru urządzenia, liczba (DISTINCT from_user) jako users_sharing \t Z

\t GROUP przez 1 \t granica 10;. \t), jak powaga rozkaz BY res.users_sharing' Daj nam znać, jak rozwiązujesz swój problem! – rafaelvalle