我想在 Snowflake 中定义一个变量,其中包含一个值列表,这样我就可以在不同的 SQL 中重用这个变量。
这是用例
set account_list = 'ID1, ID2, ID3';
我想从账户表和其他各种表中选择这3个账户
此查询正确返回 3 条记录
select * from ACCOUNT where ACCOUNT_ID in (ID1, ID2, ID3);
下面的查询都不会返回任何匹配的记录。
select * from ACCOUNT where ACCOUNT_ID in ($account_list);
select * from ACCOUNT where ACCOUNT_ID in (select $account_list);
以前有人尝试过做同样的事情吗?你是否找到了让它发挥作用的方法?谢谢
您可以使用 flatten 函数将变量列表转换为单列表,并可以在查询中使用变量值。
示例:首先,将变量值存储为 JSON 数组的字符串表示形式
设置变量1 = '[值1,值2]';
接下来,使用展平表格功能将变量列表转换为单列表。关键字“value”是 flatten 函数返回的列的名称。然后,您可以使用子查询将新表中的值返回到“where in ()”语句。
从中选择 * 其中(从表中选择值(展平(输入=> parse_json($variable1))));