Правильно ли подходит использование операторов DDL в сценарии ETL? - PullRequest
0 голосов
/ 27 мая 2020

Я работаю над переработкой решения DWH, ранее основанного на Teradata, с большим количеством сценариев BTEQ, выполняющих преобразования в зеркальных таблицах, загруженных из исходных баз данных. Новые решения будут основаны на Snowflake и по мере того, как готовится набор инструментов преобразования SQL (Snowflake) скриптов.

Это правильный подход для использования в сценариях ETL операторов DDL, которые создают, например, временные таблица, из которой отбрасывается конец скрипта?

На мой взгляд, такую ​​таблицу следует создавать перед запуском этого скрипта, а не создавать ее в скрипте на лету. Один аргумент указывает, что операторы DDL в Snowflake фиксируют транзакцию, и поэтому я хочу избегать операторов DDL в сценариях преобразования. Пожалуйста, помогите мне найти плюсы и минусы использования операторов DDL в процессе ETL и подтвердите, что я прав, или убедите меня в этом.

1 Ответ

0 голосов
/ 27 мая 2020

Если вы хотите, чтобы транзакции охватывали все этапы SELECT / INSERT / MERGE на этапе преобразования вашего ELT, вам не нужно создавать / удалять какие-либо таблицы, поскольку они будут фиксировать ваши открытые транзакции.

Мы обходим это, имея уже существующие рабочие таблицы для каждой задачи / развертывания, которые создаются / усекаются до раздела транзакции нашего процесса ELT. И наш инструментарий не позволяет одновременно запускать задачу.

Таким образом, мы загружаем в целевую таблицу, преобразуем ее во временные таблицы, а затем объединяем несколько таблиц в конечные таблицы. В транзакциях должны быть только последние шаги.

...