Как загрузить данные через Azure Data Factory «Копировать данные», не прерывая общие ресурсы? - PullRequest
0 голосов
/ 14 июля 2020

У меня есть конвейер Azure фабрики данных, который использует коннектор Snowflake «Копировать данные» для перемещения данных из таблицы в нашей Azure SQL базе данных в таблицу в нашей базе данных Snowflake. Процесс заключается в том, что мы обрезаем таблицу снежинок (с помощью сценария предварительного копирования в операции копирования данных), а затем продолжаем импорт данных, извлеченных из Azure БД. Проблема в том, что эта часть операции «копирование данных» может занять продолжительный период времени (час или более) из-за объема данных, и поэтому я понимаю, что если у нас есть общий ресурс, созданный для этих данных, потребители данных не увидит никаких результатов во время этого «простоя». Есть ли рекомендуемый подход, при котором мы можем устранить это «время простоя», чтобы потребители не пострадали во время обновления sh данных, пока оно не будет завершено на 100%?

1 Ответ

0 голосов
/ 14 июля 2020

Я бы порекомендовал использовать КЛОН С НУЛЕВЫМ КОПИЙ как часть вашего рабочего процесса. Необходимо выполнить немного больше операторов, но сначала вы должны сделать что-то вроде этого:

  1. Скопировать в таблицу {table_name_load}
  2. Клонировать таблицу, используя CREATE OR REPLACE TABLE {table_name} CLONE {table_name_load}
  3. Предоставить {table_name} для совместного использования

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

  1. усечь {table_name_load}
  2. скопировать в таблицу {table_name_load}
  3. Clone table с использованием CREATE OR REPLACE TABLE {table_name} CLONE {table_name_load}
  4. Предоставить {table_name} для совместного использования

Примечание: ваше время простоя для потребителей общей папки будет только в течение периода времени № 3 и № 4 принять для выполнения, что должно быть секунду или 2.

Также Примечание: Шаг № 4 необходим, поскольку объект {table_name} является новым каждый раз, когда вы создаете новый клон, поэтому его нужно будет повторно -добавлено на вашу долю.

...