2017-02-27 7 views
0

私は、次のロジックを持っているハイブビュー作成しようとしています:distinct文節内でCASE文を実行するにはどうすればよいですか?

create view test.view as 
select 
distinct(
    case 
    when substr(value_1, 1, 10) < "2016-01-01" then 
    regexp_extract(value_2,'(?i-sx:\\|([1-9][0-9]{0,3}x[1-9][0-9]{0,3})\\|)',1) 
    else 
    split(value_2, '\\|')[5] 
    end 
) as value_3 
from test.table; 

をしかし、私はこれを実行すると、私は次のような出力が得られます。

FAILED: ParseException line 128:2 cannot recognize input near 'distinct' '(' 'case' in select expression 

誰もが、私は書くことができます方法を知っていますこれでエラーは出ませんか?なぜこれが起こっているのか教えてください。

+0

、あなたはデータサンプルを追加する気でしょうか?私はここで何をしようとしているのだろうか –

答えて

1

distinctは機能ではありません。これは選択されたすべての列に適用され、allの選択された列の固有の組み合わせを生成します。

はこのお試しください:だから

select distinct case 
     when substr(value_1, 1, 10) < "2016-01-01" 
      then regexp_extract(value_2, '(?i-sx:\\|([1-9][0-9]{0,3}x[1-9][0-9]{0,3})\\|)', 1) 
     else split(value_2, '\\|') [5] 
     end as value_3 
from test.table; 

を、この:

select distinct (col), col2 

は同じです:エラーを無視

select distinct col, col2 
+0

私は実際に 'select col、distinct col2'をサポートするプロバイダを知らない –

関連する問題