Vin*_*ick 5 snowflake-cloud-data-platform snowflake-task
在 SnowFlake 中,是否有任何选项可以在存储过程中并行执行 sql 语句。我有一个存储过程(如下所示),其中有 35 个 sql 语句,它们按顺序运行。我们计划减少时间,考虑并行执行所有这些。
实现这一目标的最佳方法是什么?(我能想到的就是创建 35 个存储过程并同时从调度程序中调用它们)。想检查一下 SnowFlake 功能是否有更好的方法来实现这一目标?
create or replace procedure SP_TEST()
returns string
language javascript
execute as CALLER
as
$$
try {
var step_num = 0
step_num = 0
step_num++ //--#1
var sql_statement1 = snowflake.createStatement( {sqlText: `INSERT INTO TGT_TBL select * from TBL_A`} )
var sql_statement1_execute = sql_statement1.execute()
step_num++ //--#1
var sql_statement2 = snowflake.createStatement( {sqlText: `INSERT INTO TGT_TBL select * from TBL_B`} )
var sql_statement2_execute = sql_statement2.execute()
return "Completed "+step_num+" steps to load into TGT_TBL"
}
catch (err) {
throw(err)
}
$$
;
Run Code Online (Sandbox Code Playgroud)
实际上它是连续的,因为您正在为每个语句运行execute()方法。
直接回答你的问题:在单个过程中实现并行化是不可能的,据我所知,没有任何功能或具体方法。
但总的来说:增加仓库大小是节省时间的好方法,因为查询可能运行得更快。它不是并行的,但速度更快。
在我看来,当您使用单个过程时,横向扩展(即使用多集群仓库)不会带来任何好处。
| 归档时间: |
|
| 查看次数: |
3287 次 |
| 最近记录: |