Regexp 형식
Regexp 형식
Regexp 형식은 제공된 정규식에 따라 가져온 데이터의 각 줄을 파싱해요. format_regexp 설정의 정규식이 가져온 데이터의 각 줄에 적용되며, 정규식의 하위 패턴(subpattern) 수는 가져온 데이터셋의 컬럼 수와 같아야 합니다.
출처: 문서
본문
| Input | Output | Alias |
|---|---|---|
| ✔ | ✗ |
설명 (Description)
Regex 형식은 가져온 데이터의 각 줄을 제공된 정규식에 따라 파싱합니다.
사용 (Usage)
format_regexp 설정의 정규식은 가져온 데이터의 각 줄에 적용됩니다. 정규식의 하위 패턴 수는 가져온 데이터셋의 컬럼 수와 같아야 합니다.
가져온 데이터의 줄은 새줄 문자 '\n' 또는 DOS 스타일 줄바꿈 "\r\n"으로 구분되어야 합니다.
일치하는 각 하위 패턴의 내용은 format_regexp_escaping_rule 설정에 따라 해당 데이터 타입의 방법으로 파싱됩니다.
정규식이 줄과 일치하지 않고 format_regexp_skip_unmatched가 1로 설정되면, 줄은 조용히 건너뜁니다. 그렇지 않으면 예외가 발생합니다.
사용 예시 (Example usage)
data.tsv 파일을 생각해 볼게요:
data.tsv
id: 1 array: [1,2,3] string: str1 date: 2020-01-01
id: 2 array: [1,2,3] string: str2 date: 2020-01-02
id: 3 array: [1,2,3] string: str3 date: 2020-01-03
그리고 imp_regex_table 테이블:
쿼리
CREATE TABLE imp_regex_table (id UInt32, array Array(UInt32), string String, date Date) ENGINE = Memory;
다음 쿼리를 사용하여 위 테이블에 앞선 파일의 데이터를 삽입합니다:
쿼리
$ cat data.tsv | clickhouse-client --query "INSERT INTO imp_regex_table SETTINGS format_regexp='id: (.+?) array: (.+?) string: (.+?) date: (.+?)', format_regexp_escaping_rule='Escaped', format_regexp_skip_unmatched=0 FORMAT Regexp;"
이제 테이블에서 데이터를 SELECT하여 Regex 형식이 파일의 데이터를 어떻게 파싱했는지 볼 수 있어요:
쿼리
SELECT * FROM imp_regex_table;
응답
┌─id─┬─array───┬─string─┬───────date─┐
│ 1 │ [1,2,3] │ str1 │ 2020-01-01 │
│ 2 │ [1,2,3] │ str2 │ 2020-01-02 │
│ 3 │ [1,2,3] │ str3 │ 2020-01-03 │
└────┴─────────┴────────┴────────────┘
형식 설정 (Format settings)
Regexp 형식으로 작업할 때 다음 설정을 사용할 수 있어요:
- format_regexp — String. re2 형식의 정규식을 포함합니다.
- format_regexp_escaping_rule — String. 다음 이스케이프 규칙이 지원됩니다:
- CSV (CSV와 유사)
- JSON (JSONEachRow와 유사)
- Escaped (TSV와 유사)
- Quoted (Values와 유사)
- Raw (하위 패턴을 전체로 추출, 이스케이프 규칙 없음, TSVRaw와 유사)
- format_regexp_skip_unmatched — UInt8. format_regexp 표현식이 가져온 데이터와 일치하지 않을 때 예외를 발생시킬 필요를 정의. 0 또는 1로 설정할 수 있어요.