【问题标题】:dynamically flatten json using snowflake function使用雪花函数动态压扁 json
【发布时间】:2023-01-07 02:48:13
【问题描述】:

是否可以使用 snowflake 函数动态展平 json?

从表 a 中选择键,值,横向展平(输入 => variant_column)

需要转换为

【问题讨论】:

  • 请以文本形式提供源 JSON。与尝试从表格图片中的扁平化数据进行逆向工程相比,这将有所帮助。

标签: snowflake-cloud-data-platform


【解决方案1】:

我假设您的源 JSON 是这样的:

[
    {
        "empname": "e1",
        "empid": 123
    },
    {
        "empname": "e2",
        "empid": 456
    }
]

基于此,您可以使用以下方法实现所需的输出:

select
    s.value:empname::varchar as empname,
    s.value:empid::number as empid
from
    json j,
    lateral flatten (input => j.src, path => '', mode => 'ARRAY') s
;

完整示例复制代码:

create or replace table json (src variant);

insert into json(src) select parse_json($$
[
    {
        "empname": "e1",
        "empid": 123
    },
    {
        "empname": "e2",
        "empid": 456
    }
]
$$
);

select * from json;

select
    s.value:empname::varchar as empname,
    s.value:empid::number as empid
from
    json j,
    lateral flatten (input => j.src, path => '', mode => 'ARRAY') s
;

【讨论】:

    猜你喜欢
    • 2022-08-20
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2022-01-15
    • 2022-08-04
    • 2020-12-05
    相关资源
    最近更新 更多