首页 > 解决方案 > 如何在 SQL Query 中将 JSON 字段转换为表格格式?

问题描述

我有一个包含 3 列(ID、内容、日期)的表,其中内容列具有 json 格式的值,如下所示:

{
    "Id": "9999",
    "Name": "PETERPAN",
    "SubContent": [
        {
            "subcontent1": "ABC",
            "subcontent2": "123"
        }
     [
}

如何使用 SQL Query 将其转换为表格格式?

标签: sqljsonsnowflake-cloud-data-platform

解决方案


使用 LATERAL FLATTEN 将键/值对作为单独的行:

with t as (
select parse_json('{
                "Id": "9999",
                "Name": "PETERPAN",
                "SubContent": 
                    {
                        "subcontent1": "ABC",
                        "subcontent2": "123"
                    }
                 
            }') col
)
select col:Id as id, col:Name as name, sc.key, sc.value
from t, lateral flatten( input => col:SubContent ) sc;

结果是

ID      NAME        KEY         VALUE
9999    PETERPAN    subcontent1 ABC
9999    PETERPAN    subcontent2 123

推荐阅读