jsonextractkey
jsonextractkey
JSONEXTRACTKEY 함수는 'jsonPath'를 기반으로 일치하는 모든 JSON 필드 키를 STRING_ARRAY로 추출하는 함수예요.
출처: 문서
본문
'jsonPath'를 기반으로 일치하는 모든 JSON 필드 키를 STRING_ARRAY로 추출해요.
paramString 옵션 지원은 Pinot 1.5.0 릴리스부터 사용할 수 있어요. 최신 코드를 시도해 보세요.
시그니처 (Signature)
JSONEXTRACTKEY(jsonField, 'jsonPath', [paramString])
| Arguments | Description |
|---|---|
jsonField |
JSON 문서를 포함하는 Identifier/Expression |
'jsonPath' |
JSON 문서에서 값을 읽기 위해 JsonPath 문법을 따름 |
'paramString' |
세미콜론으로 구분된 키-값 쌍을 사용하는 고급 옵션용 매개변수 기반 설정. - MAXDEPTH: 과도하게 깊은 순회를 방지하기 위해 최대 추출 깊이를 제어 - 예시: jsonExtractKey(json, '$..', 'MAXDEPTH=2') - 2단계 깊이까지 키 추출 - 기본값: 무제한 깊이 (Integer.MAX_VALUE) - 양수가 아닌 값은 무제한으로 처리 - DOTNOTATION: JsonPath와 점 표기법 출력 형식 간 전환 - 예시: jsonExtractKey(json, '$..', 'DOTNOTATION=true') - JsonPath 형식: $['a']['b']['c'] - 점 표기법: a.b.c - 기본값: false (JsonPath 형식) |
'jsonPath'`은 리터럴이에요. Pinot은 이를 식별자와 구분하기 위해 작은따옴표를 사용해요.
사용 예시 (Usage Examples)
이 섹션의 예시는 Batch JSON Quick Start를 기반으로 해요. 특히 WHERE id = 7044874109 행을 쿼리할 거예요.
select id, repo, JSONEXTRACTKEY(repo, '$.*') AS keys
from githubEvents
WHERE id = 7044874109
| id | repo | keys |
|---|---|---|
| 7044874109 | {"id":115911530,"name":"LimeVista/Tapes","url":"https://api.github.com/repos/LimeVista/Tapes"} | ["$['id']", "$['name']", "$['url']"] |
select id, repo, JSONEXTRACTKEY(repo, '$.*', 'dotNotation=true') AS keys
from githubEvents
WHERE id = 7044874109
| id | repo | keys |
|---|---|---|
| 7044874109 | {"id":115911530,"name":"LimeVista/Tapes","url":"https://api.github.com/repos/LimeVista/Tapes"} | ["id", "name", "url"] |
더 많은 예시
-- Basic key extraction (existing functionality)
SELECT jsonExtractKey(repo, '$.*') FROM table
-- Extract keys with depth limit
SELECT jsonExtractKey(repo, '$..**', 'MAXDEPTH=2') FROM table
-- Extract keys in dot notation format
SELECT jsonExtractKey(repo, '$..**', 'DOTNOTATION=true') FROM table
-- Combined parameters
SELECT jsonExtractKey(repo, '$..**', 'MAXDEPTH=3;DOTNOTATION=true') FROM table