2017-12-08 2 views
0

私はウィンドウ上でcollect_listを作成しようとしていますが、同じテーブルの1つのカラムの値に基づいてウィンドウのサイズを動的に制限します。ハイブウィンドウの範囲でテーブルの列を使用

select concat_ws('->', collect_list(CASE WHEN b.colA IN ("bla", "blabla") THEN concat_ws("-", colB,colC) END) OVER (PARTITION BY colD ORDER BY time-stamp ROWS BETWEEN colE PRECEDING AND CURRENT ROW)) AS myCol from (select colA,colB,colC,colD,colE from mytable) a 

colA|colB|colC|colD|colE|time-stamp 
bla|abc|pqr|INDIA|1|2017-12-10 
bla|abc|pqr|CHINA|1|2017-12-11 
bla|abc|pqr|INDIA|2|2017-12-12 
bla|abc|pqr|INDIA|3|2017-12-13 
bla|abc|pqr|CHINA|2|2017-12-14 

ここでハイブは有効な数値を持つ範囲のcolEを受け入れません。私はエラーが発生します:

Error while compiling statement: FAILED: ParseException line 177:89 cannot recognize input near 'colE' 'preceding' 'AND' in windowframeboundary 
+0

あなたが試している完全なクエリを追加できますか? – mrsrinivas

+0

クエリとサンプルデータが追加されました –

答えて

1

ドキュメントhere。 Hiveは単語のあとに続く列を検出しません。利用可能なオプションは次のとおりです

(ROWS | RANGE) BETWEEN (UNBOUNDED | [num]) PRECEDING AND ([num] PRECEDING | CURRENT ROW | (UNBOUNDED | [num]) FOLLOWING) 
(ROWS | RANGE) BETWEEN CURRENT ROW AND (CURRENT ROW | (UNBOUNDED | [num]) FOLLOWING) 
(ROWS | RANGE) BETWEEN [num] FOLLOWING AND (UNBOUNDED | [num]) FOLLOWING 
関連する問題