【问题标题】:Flatten variable length JSON in Snowflake在雪花中展平可变长度 JSON
【发布时间】:2021-12-18 00:06:29
【问题描述】:

我有一个 JSON,其中某些记录的某些属性为空,而某些记录具有所有键值对。当我尝试使用横向展平来展平雪花中的 JSON 时,我会丢失某些属性为空或 JSON 记录中不存在的记录。下面是我拥有的 JSON 示例。

1) {
"course": 
  {
    "className": "CAPSTONE RESEARCH PROJECT",
    "courseType": "LECTURE",
    "crn": 11223,
    "crossListedCourses": [
      {
        "className": "CAPSTONE RESEARCH PROJECT",
        "courseType": "LECTURE",
        "crn": 11230,
        "lmsCourseID": "202110_FALL_SOC436_11230",
        "partialTermCode": 1,
        "subject": "SOC",
        "subjectCode": "436",
        "term": "202110"
      }
  ]
  }
}'


2)'{
"course": 
  {
    "className": "LALA LAND",
    "courseType": "LECTURE",
    "crn": 11224,
    "crossListedCourses": [
      {
        "className": "LALA LAND",
        "courseType": "LECTURE",
        "crn": 11231,
        "lmsCourseID": "202110_FALL_SOC436_11231",
        "partialTermCode": 2,
        "subject": "SOC",
        "subjectCode": "437",
        "term": "202110"
      }
  ]
  }
}'

3) '{
"course": 
  {
    "className": "ZOMBIE LAND",
    "courseType": "LECTURE",
    "crn": 11225
    
  }
}'

当横向展平成一个新表时,我使用以下查询丢失了第三条记录

    SELECT 
    json_string:course.className,
    json_string:course.courseType,
    json_string:course.crn,
    json_string:crossListedCourses,
    prod.value:className,
    prod.value:courseType,
    prod.value:crn,
    prod.value:lmsCourseID,
    prod.value:partialTermCode,
    prod.value:subject,
    prod.value:subjectCode,
    prod.value:term
    FROM variant_example, (LATERAL FLATTEN (input => json_string:course.crossListedCourses)) as 
    prod

【问题讨论】:

    标签: json snowflake-cloud-data-platform flatten


    【解决方案1】:

    FLATTEN - OUTER:

    如果为 TRUE,则为零行扩展生成一行(在 KEY、INDEX 和 VALUE 列中为 NULL)。

    默认值:假

    FROM variant_example
    ,(LATERAL FLATTEN (input => json_string:course.crossListedCourses, OUTER => TRUE))..
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-23
      • 2021-07-16
      • 2021-06-25
      • 2022-01-21
      • 1970-01-01
      • 2020-06-17
      • 2020-09-16
      • 1970-01-01
      相关资源
      最近更新 更多