정규표현식
\(.+?[\)]{2,}|\(.+?\)
: 소괄호만 가져오기
(?=조건1)(?=조건2).*
: AND 연산자
\
: 역슬래시 한개는 문법으로 이해한다.
\\
: 역슬래시 두개는 뒤에를 text로 인식한다.
\d
: 숫자에 해당하는 문자
\D
: 숫자가 아닌 문자
플래그 flag : \g
: global의 약자 문자열내 모든 부분을 매칭
^
: 문자열의 시작
$
: 문자열의 종료
\w
: 문자(숫자,영문,언더바) 하나와 매칭합니다.
a(b|c)
: a 그리고 b 또는 c를 포함한 문자열과 매칭합니다.
a[bc]
: 위에랑 같음
This is a <div> simple div </div> test
이 text를<div> </div>
<> 안의 전체매칭 : <.+><[^<>]+>
: <와> 사이에 <,> 가 아닌 모든 문자 하나 이상인 문자와 매칭
hive 정규표현식 함수 regexp_...
replace :
SELECT regexp_replace(extra, "\(\\{\|\\}\)\|\(\\[\|\\]\)", "") as extra
FROM lhj_testdb.missions_external;
SELECT extra
FROM lhj_testdb.missions_external;
SELECT regexp_replace(extra, " ", " ") as extra
FROM lhj_testdb.missions_external;
SELECT regexp_replace(extra, "\\(|\\)", "\\{|\\}") as extra
FROM lhj_testdb.missions_external;
정규표현식 안에 substring :
select
substring(regexp_replace(extra, "\(\\{\|\\}\)", ""), 0, 9) as extra
from lhj_testdb.missions_external ;
hive
--timestamp utc -> kst 로 변경
select from_utc_timestamp(dttm, "GMT+9") from lhj_testdb.missions_external as dttm;
insert into --select 문 (subquery)
insert into lhj_testdb.missions_managed
select
id
--,dttm
,from_utc_timestamp(dttm, "GMT-9") as dttm
,dag_id
,task_id
,event
,from_utc_timestamp(excution_data, "GMT-9") as excution_data
,owner
,regexp_replace((regexp_replace(regexp_replace(extra, "\'+\\,", "\'\\:"), "\\(", "\\{")), "\\)", "\\}") as extra
from lhj_testdb.missions_external;
실습할 때 내가 이용한 text
{host_name: kapa, full_command:
['/home/workflow/.pyenv/versions/dev/bin/airflow': 'run': 'kapa-ingest-tbbp19_re_27_\uc9c0\uc5ed\ubcc4\uac10\uc815\ud3c9\uac00\ud544\uc9c0\uc218-dag': 'check_ingestion': '2020-10-22T17:42:17.845168+00:00': '--local': '--pool': 'default_pool': '-sd': '/home/workflow/airflow/dags/kapa-ingest-tbbp19_re_27_\uc9c0\uc5ed\ubcc4\uac10\uc815\ud3c9\uac00\ud544\uc9c0\uc218-dag.py']}
참고 : hive docs
https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-InsertingvaluesintotablesfromSQL