Изменить запись интеграции - PullRequest
0 голосов
/ 21 февраля 2012

Нам необходимо выполнить процесс на конец дня, чтобы извлечь ежедневные транзакции из системы A и перенести только изменения в систему B.

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

Вначале я думал о том, чтобы использовать промежуточную таблицу (SQL Server), которая будет сохранять данные из системы A, а затем использоваться для целей сравнения при каждом выполнении сравнения на конец дня. Все это можно сделать с помощью объединения таблиц, чтобы определить необходимые ОБНОВЛЕНИЯ, ВСТАВКИ, УДАЛЕНИЯ.

Не будучи экспертом по SSIS, я понимаю, что это можно сделать в SSIS с помощью LOOKUP, чтобы идентифицировать добавления, обновления и удаление.

Вопрос:

  1. Является ли решение SSIS лучшим подходом и почему (ремонтопригодность, масштабируемость, расширяемость)?

  2. Что будет лучше? Есть опыт по этим 2 вариантам?

  3. Есть ли альтернативный вариант?

1 Ответ

0 голосов
/ 22 февраля 2012

Поскольку вам необходим полный набор транзакций из Системы A, это ограничивает ваши возможности в отношении источника.Я рекомендую перенести эти данные в пункт назначения необработанных файлов.Это поможет вам в процессе разработки, поскольку вы можете просто запускать задачи, которые нуждаются в этих данных снова и снова, без повторной загрузки.Также убедитесь, что исходные данные отсортированы на исходном компьютере.Служба SSIS очень слаба в сортировке, если только вы не используете сторонний компонент (в некоторых случаях это может быть ограничивающим карьеру решением).

В любом случае, давайте предположим, что у вас есть этот отсортированный необработанный файл.Следующее, что вы делаете, это добавляете это в поток данных как источник необработанных файлов.Затем, иметь источник OLEDB (или любой другой), который представляет Систему B. Вы можете использовать Raw File для этого, также, если хотите.Убедитесь, что данные из системы B отсортированы с использованием тех же столбцов, которые использовались для сортировки системы A.

Отметьте источники с помощью IsSorted = True и установите значение SortKey для соответствующих столбцов в метаданных.Это скажет SSIS, что данные предварительно отсортированы, и позволит вам присоединиться к вашим ключевым столбцам.В противном случае вы можете подождать несколько дней, пока службы SSIS отсортируют большие наборы.

Добавьте мультикасты к источникам как системы A, так и системы B. потому что мы хотим использовать их дважды.

Затем добавьте объединение слиянием.объединить два исходных файла.Сделайте Систему A левым входом.Система B станет правильным входом при подключении к Merge Join.SSIS автоматически настроит JOIN на те отсортированные столбцы, которые вы отметили на предыдущем шаге.Установите Merge Join, чтобы использовать LEFT JOIN.Таким образом, мы можем найти строки в системе A, которые не существуют в системе B, и мы можем сравнить существующие строки, чтобы увидеть, были ли они изменены.

Затем добавьте условное разбиение.Там вы можете определить 2 выходных буфера в зависимости от условий.

NewRows: ISNULL (MyRightTable.PrimaryKey)
updatedRows: [независимо от того, что представляет собой обновленную строку]

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

Мы еще не закончили.

Добавить еще одно объединение слиянием.

Этовремя, сделайте вход от MultiCast системы B левый вход.Сделайте ввод из MultiCast системы A правильным входом.Опять же, SSIS установит для вас ключи соединения.Установите объединение слиянием, чтобы использовать левое объединение.

Добавить условное разбиение вниз по этому потоку, и единственное, что вам нужно, это:

DeletedRows: ISNULL (MyRightTable.PrimaryKey)

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

Теперь у вас есть 3 буфера.

2 из них выходят из вашего первогоОбъединение Присоединяйтесь и представляйте новые строки и обновленные строки.1 из них выходит из вашего второго объединения слиянием и представляет удаленные строки.

Действуйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...