如何在雪花中定义数组变量

时间:2021-05-19 15:28:47

标签: arrays variables snowflake-cloud-data-platform

如何在雪花工作表中定义数组变量?

set columns =  (SELECT array_agg(COLUMN_NAME) FROM INFORMATION_SCHEMA.COLUMNS 
                where table_name='MEMBERS');

我收到此错误:

<块引用>

不支持的功能“从非常量源表达式赋值”。

2 个答案:

答案 0 :(得分:0)

似乎不可能:

SELECT TO_ARRAY('');
-- [""]

SET a = (SELECT TO_ARRAY(''));
-- Unsupported feature 'assignment from non-constant source expression'.

使用 SETVARIABLE

SELECT SETVARIABLE('a', (SELECT TO_ARRAY('')));
<块引用>

SQL 编译错误:第 7 行的错误行 1 函数 'SETVARIABLE' 的参数类型无效:(VARCHAR(1), ARRAY)

答案 1 :(得分:0)

不是存储数组,而是聚合在逗号分隔的字符串中:

set x = (SELECT listagg(COLUMN_NAME, ',') FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'TABLE_S%');

但是:根据 https://docs.snowflake.com/en/sql-reference/session-variables.html,“字符串或二进制变量的大小限制为 256 字节”。

这意味着即使您可以将数组存储在变量中,它也可能会超出限制。而是将结果存储在 [temp] 表中。