gpt4 book ai didi

sql - 雪花中是否有融化命令?

转载 作者:行者123 更新时间:2023-12-04 12:31:46 25 4
gpt4 key购买 nike

是否有一个 Snowflake 命令可以像这样转换一个表:

a,b,c
1,10,0.1
2,11,0.12
3,12,0.13
到这样的表:
key,value
a,1
a,2
a,3
b,10
b,11
b,13
c,0.1
c,0.12
c,0.13
?
此操作通常称为 melt在其他表格系统中,但基本思想是将表格转换为键值对列表。
有一个 UNPIVOT在 SnowSQL 中,但据我所知 UNPIVOT需要手动指定每一列。这对于大量列来说似乎不切实际。

最佳答案

Snowflake 的 SQL 功能强大,无需借助第三方工具或其他扩展即可执行此类操作。
数据准备:

CREATE OR REPLACE TABLE t(a INT, b INT, c DECIMAL(10,2))
AS
SELECT 1,10,0.1
UNION SELECT 2,11,0.12
UNION SELECT 3,12,0.13;
enter image description here
查询(又名“动态”UNPIVOT):
SELECT f.KEY, f.VALUE
FROM (SELECT OBJECT_CONSTRUCT_KEEP_NULL(*) AS j FROM t) AS s
,TABLE(FLATTEN(input => s.j)) f
ORDER BY f.KEY;
输出:
enter image description here

它是如何工作的?
  • 将行转换为 JSON(第 1 行变为 { "A": 1,"B": 10,"C": 0.1 } )
  • 使用 FLATTEN
  • 将 JSON 解析为键值对

    关于sql - 雪花中是否有融化命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68553105/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com