2012-09-26 17 views
8

tengo una colmena consulta comoColmena: SELECT AS y 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; 

la consulta anterior falla con un error

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

'LoggerTable' es una tabla de la colmena con todas las columnas de tipo de cadena .

¿Alguna solución para este problema?

Respuesta

12

Prueba esto:

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

Esto es un gran dolor si quiere definir un 'SELECT' muy complicado y quiere usarlo en su' WHERE', 'GROUP BY' y' ORDER BY'. Hay algo de solución aquí http://stackoverflow.com/questions/26028767/why-cant-hive-recognize-alias-named-in-select-part – ubershmekel

3

En Colmena 0.11.0 y más tarde, las columnas se puede especificar si la posición hive.groupby.orderby.position.alias se establece en true. Confirme si la siguiente consulta funciona para usted.

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

Intenté esto, pero funcionaría solo para el grupo . La consulta falla cuando intento ordenar por ¿Tienes alguna idea de por qué podría suceder? Mi consulta tiene este aspecto: 'SET hive.groupby.orderby.position.alias = true; SELECCIONE el dispositivo, COUNT (DISTINCT from_user) AS users_sharing FROM .

GRUPO POR 1 orden por 2 desc límite 10' Y obtuve el siguiente error: 'FAILED: SemanticException [Error 10004]: Línea 4:21 Alias ​​de tabla inválida o referencia de columna 'from_user': (los posibles nombres de columna son: dispositivo , users_sharing) ' –

+0

Disculpe por el formato. No pude encontrar la forma de publicar la consulta con la sangría preservada. –

+0

Confirme que su referencia de columna o alias de tabla 'from_user' existe. Tal vez diferente ortografía, error tipográfico. Una posible solución es dividir su consulta en dos partes: 'hive.groupby.orderby.position.alias = true; res.device SELECT, res.users_sharing FROM (dispositivo SELECT, COUNT (FROM_USER DISTINCT) AS users_sharing \t DE

\t GROUP BY 1 \t límite 10;. \t) como res ORDER BY res.users_sharing' ¡Déjanos saber cómo resuelves tu problema! – rafaelvalle