У меня есть хранимая процедура, которая выполняет 3 инструкции insert / select в 3 разных таблицах в Snowflake: ScheduleUnion, ScheduleUnion1, ScheduleUnion2. Теперь из-за времени, которое требуется для выполнения каждого оператора, я хотел бы выполнять их параллельно, чтобы сократить общее время выполнения. Для этого я пытаюсь использовать Promise.all в Javascript. Я не собираюсь публиковать здесь все операторы вставки, но этот пример хорошо показывает, как я это делаю:
CREATE OR REPLACE procedure etl."JimTest" ()
RETURNS VARCHAR
LANGUAGE JAVASCRIPT
AS
$$
async function runSQL(sqlarray) {
snowflake.execute({ sqlText: sqlarray.sqltask } );
}
async function executeQuery() {
sql1 = `INSERT into ScheduleUnion Select.....`
sql2 = `INSERT into ScheduleUnion1 Select.....`
sql3 = `INSERT into ScheduleUnion2 Select.....`
const queries = [
{sqltask: sql1},
{sqltask: sql2},
{sqltask: sql3}
];
const sqlTasks = queries.map(runSQL);
await Promise.all(sqlTasks);
}
executeQuery();
return 'done';
$$
Однако; Я все еще вижу, что мои операторы вставки выполняются последовательно, один за другим:
![enter image description here](https://i.stack.imgur.com/neAda.png)
Is there a параметр Я пропущен, или что-то не так с моим Javascript?