JSONPATHARRAYDEFAULTEMPTY

JSONPATHARRAYDEFAULTEMPTY

JSONPATHARRAYDEFAULTEMPTY 함수는 jsonField에서 'jsonPath'를 기반으로 배열을 추출하는 함수예요. 결과 타입은 JSON 값에 따라 추론되며, null 또는 파싱 오류 시 빈 배열을 반환해요. 이 함수는 수집 변환 함수에서만 사용할 수 있어요.

출처: 문서

본문

jsonField에서 'jsonPath'를 기반으로 배열을 추출하고, 결과 타입은 JSON 값에 따라 추론돼요. null 또는 파싱 오류 시 빈 배열을 반환해요. 이 함수는 수집 변환 함수에서만 사용할 수 있어요.

시그니처 (Signature)

JSONPATHARRAYDEFAULTEMPTY(jsonField, 'jsonPath')

Arguments Description
jsonField JSON 문서를 포함하는 Identifier/Expression
'jsonPath' JSON 문서에서 값을 읽기 위해 JsonPath 문법을 따름

'jsonPath'`은 리터럴이에요. Pinot은 이를 **식별자(identifier)**와 구분하기 위해 작은따옴표를 사용해요.

데이터를 가져오기 전에 Jayway JsonPath Evaluator Tool을 사용해 JSON 표현식을 테스트할 수 있어요.

사용 예시 (Usage Examples)

다음 JSON 문서에서 필드를 추출하는 데 기반한 예시예요:

{
  "data": {
    "name": "Pete",
    "age": 24,
    "subjects": [
      {
        "name": "maths",
        "homework_grades": [80, 85, 90, 95, 100],
        "grade": "A",
        "score": 90
      },
      {
        "name": "english",
        "homework_grades": [60, 65, 70, 85, 90],
        "grade": "B",
        "score": 70
      }
    ]
  }
}
Expression Value
JSONPATHARRAYDEFAULTEMPTY(myJsonRecord, '$.subjects[*].name') ["maths", "english"]
JSONPATHARRAYDEFAULTEMPTY(myJsonRecord, '$.subjects[*].score') [90, 70]
JSONPATHARRAYDEFAULTEMPTY(myJsonRecord, '$.subjects[*].homework_grades[1]') [85, 65]
JSONPATHARRAYDEFAULTEMPTY(myJsonRecord, '$.subjects[*].homework_grades[7]') []

이 함수는 아래와 같이 테이블 설정에서 name, score, 그리고 homework_grades의 두 번째 값을 각각의 컬럼으로 추출하는 데 사용할 수 있어요:

{
   "tableConfig":{
      "ingestionConfig":{
         "transformConfigs":[
            {
               "columnName":"names",
               "transformFunction":"JSONPATHARRAYDEFAULTEMPTY(data, '$.subjects[*].name')"
            },
            {
               "columnName":"ages",
               "transformFunction":"JSONPATHARRAYDEFAULTEMPTY(data, '$.subjects[*].score')"
            },
            {
               "columnName":"homeworkGrades",
               "transformFunction":"JSONPATHARRAYDEFAULTEMPTY(data, '$.subjects[*].homework_grades[1]')"
            }
         ]
      }
   }
}

더 알아보기 (Learn more)