[SQL] Hive 하면서 썼던 것들 정리

이혜지·2021년 1월 28일
0

정규표현식

\(.+?[\)]{2,}|\(.+?\) : 소괄호만 가져오기

(?=조건1)(?=조건2).* : AND 연산자

\ : 역슬래시 한개는 문법으로 이해한다.
\\ : 역슬래시 두개는 뒤에를 text로 인식한다.
\d : 숫자에 해당하는 문자
\D : 숫자가 아닌 문자
플래그 flag : \g : global의 약자 문자열내 모든 부분을 매칭

^ : 문자열의 시작
$ : 문자열의 종료
\w : 문자(숫자,영문,언더바) 하나와 매칭합니다.
a(b|c) : a 그리고 b 또는 c를 포함한 문자열과 매칭합니다.
a[bc] : 위에랑 같음

  • ex ) This is a <div> simple div </div> test 이 text를
    <div> </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

profile
공유 문화를 지향하는 개발자입니다.

0개의 댓글