9

次のようなHiveクエリがあります

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;

上記のクエリはエラーで失敗します

失敗: セマンティック分析のエラー: 行 1:175 無効なテーブル エイリアスまたは列参照 secondMod

「LoggerTable」は、すべての列が文字列型の Hive テーブルです。

この問題の回避策はありますか?

4

2 に答える 2

12

これを試して:

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;
于 2012-09-26T11:25:21.420 に答える
4

Hive 0.11.0 以降では、hive.groupby.orderby.position.aliasが に設定されている場合、列を位置で指定できますtrue。次のクエリが機能するかどうかを確認してください。

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;
于 2016-07-28T10:12:02.340 に答える