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

더 알아보기 (Learn more)