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을 반환하므로, 후속 기본값 추출은 행을 실패시키지 않고 구성된 기본값을 반환해요.

더 알아보기 (Learn more)