【问题标题】:Snowflake flatten how to?雪花怎么弄平?
【发布时间】:2022-01-13 01:02:32
【问题描述】:

我有一个场景,数据在 SNOWFLAKE SQL 中的格式如下。列 AGREEMENTS 使用 listagg 框架

我想将“AGREEMENTS”列展平,并将表格格式化如下。请求帮助

【问题讨论】:

    标签: snowflake-cloud-data-platform flatten


    【解决方案1】:

    SPLIT_TO_TABLE 是您正在寻找的功能。鉴于您有这么多列,我没有将它们全部输入。您可以使用t.* 获取所有信息。

    SELECT 
        t.well,
        t.well_co,
    <snip>
        a.value::text AS agreements,
        t.agreements_count
    FROM table t,
        table(split_to_table(t.agreements, ',') a
    

    【讨论】:

    • 对不起,Simeon,不是故意踩你的答案。我会留下我的,以防 OP 真的想利用 flatten。
    • @MikeWalton 根本不要踩,我要评论你的回答,我赌你 30 秒。但认为这是低价值.. 两者都是非常有效的方法,我曾经按照你的方式做,但最近发现 SPLIT_TO_TABLE 所以就这样做了。
    • 谢谢@SimeonPilgrim
    【解决方案2】:

    您希望按照以下方式做一些事情:

    SELECT x.{list of fields}, y.value::varchar as agreements
    FROM x,
    LATERAL FLATTEN(input=>SPLIT(x.agreements,',')) y;
    

    【讨论】:

    • 谢谢@Mike Walton
    猜你喜欢
    • 1970-01-01
    • 2020-09-16
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    • 1970-01-01
    • 2020-09-12
    • 2021-07-23
    相关资源
    最近更新 更多