2016-07-13 4 views
0

하이브에 정규식 일치 값을 추출하고 싶습니다. 아래는 내 테이블 열 데이터입니다. 데이터는 단일 열에 대한 것입니다. 이 열을 csv 데이터 목록으로 간주하십시오. 하이브 정규 표현식으로 값 가져 오기

: 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 

나는 파이프 사이에 2 값을합니다.

  1. 1 값 => 1234
  2. 4 값 => ABC
  3. 5 값 => 진정한

내 쿼리 :

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

예상 출력 :

REQUIRED 
REQUIRED 
<NULL>(OR EMPTY) 
REQUIRED 

현재 쿼리 출력 : 어디 쿼리 할 때 잘못된

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

나도 몰라. 하이브 정규식입니다.

답변

0

나는 필요한 답을 얻었다. 나는 파이프를 두 번 탈출해야했다.

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

정답으로 선택할 수 있습니다. – gobrewers14

+0

나는 아직도 내 자신의 대답을 선택하는 2 시간을 기다려야합니다 .. 그것을 기다리고 .. :) – Prashanth

+0

아, 잊어 버렸습니다 .... :) – gobrewers14