2016-05-27 6 views
0

私のUDAFは配列を返しますが、SemanticExceptionが発生しているので、おそらく関係ありません。UDAFのGROUP BYキーにない式

ADD JAR udaf.jar; 
SELECT a, b, c, 
      sum(i) i, 
      sum(l) l, 
      myUDAF(f, ud, uh, i, tb, l, tl, (co + cov), tco, lb, lr) ms 
     FROM table 
GROUP BY a, b, c; 

私は明示的に(必要ではないはずである)によってグループに「LR」を追加しても、同じエラーが出る

SemanticException [Error 10025]: Expression not in GROUP BY key 'lr' 

を与えます。

+1

てみ加える「ミリ秒」働くようになります。 –

+0

このエラーは、グループ化された列の値に対してUDFを実行するとエンジンが判断したことを示しています。 Gordon Linoffが示唆しているように、実際にそれを個々の行で実行したい場合は、おそらくネストされたクエリが必要になり、次に 'ms'をgroup by節に追加します。 –

+0

グループにmsを追加しようとすると、「無効なテーブルエイリアスまたはカラム参照 'ms」が表示されます(可能なカラム名は...) UDAFを実行したいと考えているかどうかはわかりませんこれをテストするには、UDAFの最後の位置に 'c'を入れてみました。「GROUP BYキー 'c'ではない表現」を返します。 最後のパラメータとして与えられるものは、エラー –

答えて

1

私はこれまでにこの回答を見つけましたが、投稿していませんでした。基本的には、jarを追加した後に関数を作成する必要があります。

CREATE TEMPORARY FUNCTION myUDAF as 
'com...udaf.myUDAF'; 

のようなものを追加すると、それは「によってグループ」に