Как обрабатывать Данные Большого Размера С Использованием Нескольких Потоков В Процедуре Snowflake

#snowflake-cloud-data-platform

Вопрос:

мое требование таково: У меня есть большой объем данных, доступных в Snowflake, и я хотел бы обрабатывать данные с использованием многопоточной процедуры на основе JavaScript ; доступные данные независимы друг от друга; в принципе, нет взаимозависимости; поэтому, чтобы сократить время обработки, я хотел бы обрабатывать эти данные в нескольких потоках. Знаете ли вы, как это можно сделать, используя многопоточную опцию в JavaScript.

Ответ №1:

К сожалению, API хранимых процедур для JavaScript не поддерживает асинхронные запросы или многопоточность (на данный момент).

Альтернативой является использование дерева задач Snowflake — поскольку у одной задачи может быть несколько зависимых, они будут выполняться параллельно.

Вот доказательство с минимальным примером:

В этом примере я создал два запроса, выполнение каждого из которых занимает 10 секунд. Имея обе параллельные задачи в дереве, вы можете видеть, что они выполняются одновременно:

введите описание изображения здесь

Вы можете видеть, что обоим запросам потребовалось 10 секунд, чтобы создать по 5 миллиардов строк каждый, а затем вставить новую строку в течение той же секунды.

Комментарии:

1. спасибо @Felipe Hoffa за ваш быстрый ответ.

2. Спасибо! Кстати, проверьте мой обновленный ответ, который включает в себя способ параллельного выполнения нескольких запросов за счет использования задач,