首页 > 解决方案 > 我们可以在雪花中使用参数化视图吗?

问题描述

我们可以在雪花中使用参数化视图吗?比如传递表名或者数据库名作为参数而不是硬编码呢?

标签: snowflake-cloud-data-platform

解决方案


我认为您最好的选择是将会话变量与常规视图结合使用。

会话变量可以在视图 DDL 中引用,并且需要在查询视图的任何会话中设置。

为此,您可以使用 Snowflake 中的IDENTIFIER函数,它允许您使用文本作为对象标识符。

create table t1 (col1 number, col2 number);
create table t2 (col1 number, col2 number);


set ti = 't1';
create view v1 as select col1, col2 from identifier($ti);

在查询视图之前,您需要将会话变量(ti在这种情况下)设置为表名(如果需要,完全限定)。

set ti = 't1';
select * from v1; -- returns data from t1

set ti = 't2';
select * from v1; -- returns data from t2

推荐阅读