flatten 命令接受一个变量,如何将它用于多行
faltten command takes one variable, how to use it for multiple rows
我是 snowflake 的新手,正在尝试找出一种方法来展平多行。感谢这里的任何帮助!
我们正在从 snowpipe 接收文件。多个文件进入一个阶段 table。每个文件包含多条记录,但是,所有记录都在一个数组变量中。当我使用 flatten 命令时,如果只有一个文件,它工作正常,它会展平数组并分隔记录。但是,当有多个文件时,flatten 命令会失败并出现错误“单行子查询 returns 多于一行”。如何处理?
{ "test": [ { "a": true, "b": "20" }, { "a": true, "b": "30"}, { "a": false, "b": "40" } ], "Date": "Sun Jan 02 2022 16:00:30 GMT+0000 (Coordinated Universal Time)" }
这是为了澄清而编造的数据,每个文件都包含这样的数据。 SQL我用的是
select * from table(flatten(select :test from @stage))
如果只有一个文件具有上述结构,则可以正常工作。但是对于多个文件它失败了
更改操作顺序
SELCT
s.*,
f.*
FROM @stage s,
TABLE(FLATTEN(input=>s.:test)) f
这样您就可以为每个阶段文件获得一行 s
,然后可以访问扁平化的 f
结果。
我是 snowflake 的新手,正在尝试找出一种方法来展平多行。感谢这里的任何帮助! 我们正在从 snowpipe 接收文件。多个文件进入一个阶段 table。每个文件包含多条记录,但是,所有记录都在一个数组变量中。当我使用 flatten 命令时,如果只有一个文件,它工作正常,它会展平数组并分隔记录。但是,当有多个文件时,flatten 命令会失败并出现错误“单行子查询 returns 多于一行”。如何处理?
{ "test": [ { "a": true, "b": "20" }, { "a": true, "b": "30"}, { "a": false, "b": "40" } ], "Date": "Sun Jan 02 2022 16:00:30 GMT+0000 (Coordinated Universal Time)" }
这是为了澄清而编造的数据,每个文件都包含这样的数据。 SQL我用的是
select * from table(flatten(select :test from @stage))
如果只有一个文件具有上述结构,则可以正常工作。但是对于多个文件它失败了
更改操作顺序
SELCT
s.*,
f.*
FROM @stage s,
TABLE(FLATTEN(input=>s.:test)) f
这样您就可以为每个阶段文件获得一行 s
,然后可以访问扁平化的 f
结果。