CREATE DICTIONARY ... SOURCE YAMLRegExpTree
CREATE DICTIONARY ... SOURCE YAMLRegExpTree
YAMLRegExpTree 소스는 로컬 파일 시스템의 YAML 파일에서 정규 표현식 트리를 로드해요.
regexp_tree 딕셔너리 레이아웃과 함께만 사용하도록 설계되었으며, 사용자 에이전트 파싱 같은 패턴 기반 조회를 위한 계층적 regex-속성 매핑을 제공합니다.
YAMLRegExpTree 소스는 ClickHouse 오픈소스에서만 사용할 수 있어요.
ClickHouse Cloud의 경우 딕셔너리를 CSV로 내보내고 대신 ClickHouse 테이블 소스로 로드하세요.
자세한 내용은 Using regexp_tree dictionaries in ClickHouse Cloud를 참고하세요.
출처: 문서
본문
Configuration
CREATE DICTIONARY regexp_dict
(
regexp String,
name String,
version String
)
PRIMARY KEY(regexp)
SOURCE(YAMLRegExpTree(PATH '/var/lib/clickhouse/user_files/regexp_tree.yaml'))
LAYOUT(regexp_tree)
LIFETIME(0);
설정 필드:
| Setting | Description |
|---|---|
PATH |
정규 표현식 트리를 담은 YAML 파일의 절대 경로예요. DDL로 만들 때 파일은 user_files 디렉터리에 있어야 해요. |
YAML file structure
YAML 파일은 정규 표현식 트리 노드의 목록을 담고 있어요. 각 노드는 속성과 자식 노드를 가질 수 있어 계층을 형성합니다.
- regexp: 'Linux/(\d+[\.\d]*).+tlinux'
name: 'TencentOS'
version: '\1'
- regexp: '\d+/tclwebkit(?:\d+[\.\d]*)'
name: 'Android'
versions:
- regexp: '33/tclwebkit'
version: '13'
- regexp: '3[12]/tclwebkit'
version: '12'
- regexp: '30/tclwebkit'
version: '11'
- regexp: '29/tclwebkit'
version: '10'
각 노드는 다음 구조를 가집니다.
regexp: 이 노드의 정규 표현식이에요.- attributes: 사용자 정의 딕셔너리 속성(예:
name,version)이에요. 속성 값은 정규 표현식의 캡처 그룹에 대한 역참조를 포함할 수 있으며,\1또는$1(번호 1-9)로 작성됩니다. 이 역참조는 쿼리 시 일치한 캡처 그룹으로 대체됩니다. - child nodes: 각각 고유한 속성과 선택적으로 더 많은 자식을 가진 자식 목록이에요. 자식 목록의 이름은 임의입니다(예: 위의
versions). 문자열 매칭은 깊이 우선으로 진행됩니다. 문자열이 노드와 일치하면 그 자식들도 확인됩니다. 가장 깊은 일치 노드의 속성이 우선하며, 같은 이름의 부모 속성을 덮어씁니다.
더 알아보기 (Learn more)
- regexp_tree dictionary layout — 레이아웃 구성, 쿼리 예시, 매칭 모드
- dictGet, dictGetAll — 정규식 트리 딕셔너리 쿼리 함수