Фабрика данных Azure: копирование данных (или потока данных) из базы данных postgresql - PullRequest
0 голосов
/ 04 июля 2019

Я немного растерялся из-за фабрики данных Azure.

Моя цель - извлечь данные из базы данных нашей компании postgresql и преобразовать их в базу данных SQL Azure (к которой впоследствии можно получить доступ Power Power).

Я создал конвейер и попытался использовать «Поток данных» в качестве действия. Тем не менее, я не могу выбрать свою базу данных postgresql в качестве источника там. Допустимыми источниками являются, например, другие базы данных SQL Azure.

Поэтому я попытался выполнить действие «Копировать данные», чтобы скопировать данные из базы данных postgresql в Azure SQL database (1) и затем преобразовать данные с помощью «потока данных» в Azure SQL database (2) (который имеет другую структуру таблицы) .

Это хороший и правильный подход?

У меня есть несколько проблем с этим подходом:

  • Я не могу выбрать несколько таблиц из моего исходного набора данных postgresql (ни из моего целевого набора данных Azure SQL database (1)). Azure дает мне возможность выбрать одну таблицу или «Нет». Я мог бы справиться с этой проблемой, если бы создал несколько наборов данных с разными таблицами, но это кажется неправильным и неосуществимым.
  • Я не уверен, что произойдет, если данные уже присутствуют в Azure SQL database (1). В операции «Поток данных» у меня есть возможность выбрать «Разрешить вставку», «Разрешить обновление» или другие ключевые столбцы. В операции «Копировать данные» у меня нет такой возможности.

Может кто-нибудь направить меня в правильном направлении, пожалуйста?

1 Ответ

2 голосов
/ 05 июля 2019

Существует три варианта обработки преобразования:

  1. На стороне источника данных Вы можете поместить логику в хранимую процедуру (не уверен, что это возможно с postgresql) или в SQL-запрос напрямую.Затем выберите только таблицу результатов.

    • Меньше сетевого трафика
    • больше нагрузки на источник, возможно, не разрешено
  2. Обработка наСреда выполнения интеграции фабрики данных Это вариант с потоком данных.Здесь таблицы копируются во время выполнения интеграции, затем обрабатываются, а затем результат копируется в ваш приемник.Так как это тихая новая опция, доступно не так много соединений.вам, возможно, придется сначала обойтись с копированием данных на ASQL Server.

    • возможно, медленнее, в зависимости от размеров ваших ресурсов
    • простой в создании логический / визуальный интерфейс
  3. Обработка в приемнике Скопируйте необработанные данные на сервер ASQL и выполните там запрос или хранимую процедуру.

    • большая гибкость, так как вы можете изменить размер ASQL, если он требует больше ресурсов
    • быстрая обработка
    • более гибкая, если возможен прием и обработка дельта (выполнение операций upserts / merges)
    • много обслуживания

Все три являются допустимыми вариантами и полностью зависят от вашего варианта использования и требований (относительно операций, SLA, ...)

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

Об имеющихся данных: copy только вставляет данные.Если вы хотите сначала обрезать таблицу, вы можете добавить это как «сценарий предварительного копирования».

Если я что-то забыл, пожалуйста, прокомментируйте, я обновлю сообщение соответственно

...