Snowflake cloud data platform 在Snowflake中灵活命名表

Snowflake cloud data platform 在Snowflake中灵活命名表,snowflake-cloud-data-platform,Snowflake Cloud Data Platform,(代表雪花客户提交) 我想灵活命名我创建的表 比如说 Set name = April 然后 Create table customer_data_$name as 到目前为止,我发现了两个推荐的选项: 1-使用Snowsql: 脚本test.sql: create table mytab_&NAME as select current_timestamp ts; 2-使用JavaScript存储过程: 两个问题: 答:在这两项建议中,有没有理由利用其中一项而不是另一项 B.在这

(代表雪花客户提交)

我想灵活命名我创建的表

比如说

Set name = April
然后

Create table customer_data_$name as
到目前为止,我发现了两个推荐的选项:

1-使用Snowsql: 脚本test.sql:

create table mytab_&NAME as
select current_timestamp ts;
2-使用JavaScript存储过程: 两个问题:

答:在这两项建议中,有没有理由利用其中一项而不是另一项

B.在这种情况下,是否有其他可供利用的推荐方案


如有任何建议或补充建议,将不胜感激。谢谢大家!

在这两个选项中,我选择使用Snowsql上的存储过程,因为它是一个更可移植的解决方案。Snowsql需要从主机上执行,而存储过程可以从任何地方执行,因为它们在Snowflake中运行。这样,如果您想在ELT/ETL过程中使用第三方工具python、java等来实现这一点,只需调用SP即可创建表

请注意,我可能会创建一个SP来为我重命名一个表,而不是执行完整的CTAS语句。然后,您的流程可以在不涉及SP的情况下创建一个表,然后您可以将表名+$name值传递到SP中,并让它为您重命名。无论哪种方法都有效,但我会这么做

create table mytab_&NAME as
select current_timestamp ts;
create or replace procedure Proc_CT(NAME varchar)
RETURNS varchar(22)
LANGUAGE JAVASCRIPT
Execute as OWNER
as
$$
  var ct_qry = `create or replace table mytab_`+NAME+`(i int);`
  var ct_stmt = snowflake.createStatement({ sqlText: ct_qry });
  ct_stmt.execute();
    return 'Done.';
$$
;

CALL Proc_CT('April');