繁体   English   中英

Snowflake 中的 Json 扁平化 - 数组、数据对象

[英]Json flattening in Snowflake - array, data object

对此相当陌生,但有人可以帮助我吗?

我有以下 JSON:

{
  "city": [
    {
      "city_description": {
        "text": {
          "st": "capital"
        }
      },
      "city_land": {
        "st": {
          "st": "Other"
        }
      },
      "city_size": {
        "id": [
          {
            "id": "small"
          },
          {
            "id": "big"
          },
          {
            "id": "moderate"
          }
        ]
      },
      "city_type": {
        "id": [
          {
            "id": "1"
          },
          {
            "id": "2"
          },
          {
            "id": "3"
          }
        ]
      },
      "conception_date": {
        "st": {
          "st": "13051977"
        }
      },
      "mark_row": {
        "id": {
          "id": "1"
        }
      }
    },
    {
      "city_description": {
        "text": {
          "st": "cottage"
        }
      },
      "city_land": {
        "st": {
          "st": "Other"
        }
      },
      "city_size": {
        "id": [
          {
            "id": "small"
          },
          {
            "id": "big"
          },
          {
            "id": "moderate"
          }
        ]
      },
      "city_type": {
        "id": [
          {
            "id": "1"
          },
          {
            "id": "2"
          },
          {
            "id": "3"
          }
        ]
      },
      "conception_date": {
        "st": {
          "st": "15071999"
        }
      },
      "mark_row": {
        "id": {
          "id": "2"
      }
    }
  }
 ],
 "country": {
    "country_code": {
      "coordinates": {
        "id": "00111022"
      },
      "name_of_country": {
        "st": "Belarus"
      },
      "desc": {
        "st": "Non-eu"
      }
    },
    "country_identifier": {
      "id": {
        "id": "99"
      }
    },
    "country_description": {
      "st": {
        "st": "TBD"
      }
    },
    "country_type": {
      "is": [
        {
          "is": "01"
        },
        {
          "is": "X90"
        }
      ]
    },
    "country_id": {
      "si": {
        "si": "3"
      }
    }
  }
  }

这作为字符串存储在雪花中。 我能够为第一个数组选择数据(例如第一列)。

我能够为第一个数组选择数据(例如第一列):

SELECT
f.VALUE:city_description:text:st AS city_description
FROM tableinsnowflake t,
LATERAL flatten(input => t.PARSED_DATA, path => 'city') f

我想为 COUNTRY 做同样的事情,但似乎不知何故卡住了。 有什么想法吗? 谢谢!

无需使用FLATTEN即可直接从parsed_data列访问国家/地区:

SELECT
  f.VALUE:city_description:text:st::TEXT AS city_description,
  t.parsed_data:country:country_code:name_of_country:st::TEXT AS name_of_country
FROM tab t,
LATERAL FLATTEN(input => t.PARSED_DATA, path => 'city') f

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM