2016-07-13 7 views
0

で値を取得します。以下は私のテーブルの列データです。データは単一列のみです。この列をデータのcsvリストとみなします。私はハイブでの正規表現のマッチ値を抽出したいハイブ正規表現

TABLE1:COL1

1234|REQUIRED|VALUE|ABC|true 
3991|NOT REQUIRED|VALUE|ABC|false,1234|REQUIRED|VALUE||true 
3214|NOT REQUIRED|VALUE|ABCD|true,1234|REQUIRED|VALUE|ABC|false,1234|NOT REQUIRED|||false 
1254|NOT REQUIRED||UPC|true,1235|REQUIRED||ABC|true 

は、私は、パイプ間の第二値を求めています。

  1. 第一値=> 1234
  2. 第四の値=> ABC
  3. 第五値=>真

マイクエリ:

select regexp_extract(col1, '1234\|([^|]{0,})\|[^|]{0,}\|ABC\|true', 1) col from table1; 

予想される出力:

REQUIRED 
REQUIRED 
<NULL>(OR EMPTY) 
REQUIRED 

現在のクエリ出力:どこクエリ時に間違った

<NULL> 
<NULL> 
<NULL> 
<NULL> 

は私は知りません。これはハイブの正規表現です。

答えて

0

私は必要な答えを得ました。私はパイプを2回エスケープしなければならなかった。

select regexp_extract(col1, '1234\\|([^|]{0,})\\|[^|]{0,}\\|ABC\\|true', 1) col from table1; 
+0

あなたは正しい答えとしてこれを選択することができます。 – gobrewers14

+0

私はまだそれを待っている...私自身の答えを選択するために2時間を待つ必要が.. :) – Prashanth

+0

右ああ、忘れてしまった...。:) – gobrewers14