JSONEXTRACTOBJECT
JSONEXTRACTOBJECT
JSONEXTRACTOBJECT 함수는 JSON 문서를 파싱해 후속 추출을 위한 재사용 가능한 객체 또는 배열 값으로 만드는 함수예요. 이 함수는 예외 없이 null, 스칼라, 비-JSON 입력에 대해 null을 반환하므로, 한 번 파싱하고 많은 필드를 추출해야 하는 수집 변환 함수에 적합해요.
출처: 문서
본문
JSON 문서를 파싱해 후속 추출을 위한 재사용 가능한 객체 또는 배열 값으로 만들어요. 이 함수는 null, 스칼라, 비-JSON 입력에 대해 예외 없이 null을 반환하므로, 한 번 파싱하고 많은 필드를 추출해야 하는 수집 변환 함수에 잘 맞아요.
시그니처 (Signature)
JSONEXTRACTOBJECT(jsonField)
| Arguments | Description |
|---|---|
jsonField |
JSON 객체, JSON 배열, 또는 이미 파싱된 컨테이너 값을 포함하는 Identifier 또는 Expression |
언제 사용하나요 (When to use it)
여러 변환 설정이 같은 JSON 문서의 필드를 필요로 할 때 JSONEXTRACTOBJECT를 사용하세요. 문서를 한 번 파싱해 중간 컬럼으로 만든 다음, 원래 문자열을 추출 필드마다 다시 파싱하는 대신 JSONPATHSTRING, JSONPATHLONG, JSONPATHDOUBLE, JSONPATHARRAY를 그 중간 값으로 지정하세요.
이 함수는 일반 텍스트나 스칼라 입력에 대해 null을 반환하므로, 때로는 JSON을 포함하고 때로는 구조화되지 않은 텍스트를 포함하는 컬럼의 기본값 JSONPATH* 오버로드와도 잘 동작해요.
사용 예시 (Usage examples)
다음 수집 설정은 message를 한 번 파싱한 다음, 파싱된 중간 컬럼에서 두 필드를 추출해요:
{
"tableConfig": {
"ingestionConfig": {
"transformConfigs": [
{
"columnName": "message_obj",
"transformFunction": "JSONEXTRACTOBJECT(message)"
},
{
"columnName": "level",
"transformFunction": "JSONPATHSTRING(message_obj, '$.level', null)"
},
{
"columnName": "msg_time",
"transformFunction": "JSONPATHSTRING(message_obj, '$.time', null)"
}
]
}
}
}
message가 JSON 대신 일반 텍스트일 때 JSONEXTRACTOBJECT(message)는 null을 반환하므로, 후속 기본값 추출은 행을 실패시키지 않고 구성된 기본값을 반환해요.