5

拡張子を返す UDF (GetUrlExt) があります。(例: /abc/models/xyz/images/top.jpg 内の jpg)。データは次のようになります。

Date Time TimeTaken uristem  
9/5/2011 0:00:10 234 /abc/models/xyz/images/top.jpg  
9/5/2011 0:00:11 456 /abc/models/xyz/images/bottom.jpg  
9/5/2011 0:00:14 789 /abc/models/xyz/images/left.gif  
9/5/2011 0:00:16 234 /abc/models/xyz/images/top.pdf  
9/5/2011 0:00:18 734 /abc/models/xyz/images/top.pdf  
9/5/2011 0:00:19 654 /abc/models/xyz/images/right.gif  
9/5/2011 0:00:21 346 /abc/models/xyz/images/top.pdf  
9/5/2011 0:00:24 556 /abc/models/xyz/images/front.pdf  
9/5/2011 0:00:26 134 /abc/models/xyz/images/back.jpg

「GROUP BY」のないクエリは正常に機能しています。

SELECT GetUrlExt(uristem) AS extn FROM LogTable; 

結果: jpg jpg gif pdf pdf gif pdf pdf jpg

ここで、GetUrlExt UDF の結果に「GROUP BY」が必要です。
期待される結果:
jpg 3 274.6
gif 2 721.5
pdf 4 467.5

しかし、次のクエリは機能しません。

SELECT GetUrlExt(uristem) AS extn, Count(*) AS PerCount, Avg(TimeTaken) AS AvgTime FROM LogTable GROUP BY extn;

どんな種類の助けも大歓迎です!

4

2 に答える 2

7

サブクエリを使用してグループ化してください。

Hive は、計算値によるグループ化を直接サポートしていません。

SELECT a.extn, Count(*) AS PerCount, Avg(TimeTaken) AS AvgTime 
FROM
(
    SELECT GetUrlExt(uristem) AS extn, TimeTaken
    FROM LogTable 
) a
GROUP BY a.extn;
于 2012-11-21T08:26:47.540 に答える