Rox*_*ces 9 arrays variables snowflake-cloud-data-platform
如何在雪花工作表中定义数组变量?
set columns = (SELECT array_agg(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS
where table_name='MEMBERS');
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
不支持的功能“来自非常量源表达式的分配”。
现在可以使用 Snowflake 脚本来实现:
declare
tmp_array ARRAY default ARRAY_CONSTRUCT();
rs_output RESULTSET;
begin
for i in 1 to 20 do
tmp_array := array_append(:tmp_array, OBJECT_CONSTRUCT('c1', 'a', 'c2', i));
end for;
rs_output := (select value:c1, value:c2 from table(flatten(:tmp_array)));
return table(rs_output);
end;
Run Code Online (Sandbox Code Playgroud)
不存储数组,而是聚合在逗号分隔的字符串中:
set x = (SELECT listagg(COLUMN_NAME, ',') FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'TABLE_S%');
Run Code Online (Sandbox Code Playgroud)
但是:根据https://docs.snowflake.com/en/sql-reference/session-variables.html,“字符串或二进制变量的大小限制为 256 字节” 。
这意味着即使您可以将数组存储在变量中,它也可能会超出限制。而是将结果存储在 [temp] 表等中。
| 归档时间: |
|
| 查看次数: |
10647 次 |
| 最近记录: |