SSIS обнаруживает изменения - PullRequest
0 голосов
/ 20 сентября 2018

В настоящее время я изучаю свой путь в SSIS.И я ищу лучший способ что-то сделать.

Я загружаю данные из базы данных Oracle в SQL Server.

Данные Oracle загружаются, конвертируются и сортируются.Данные SQL Server также загружаются, сортируются.

Затем они помещаются в соединение слиянием (полное внешнее).

Затем происходит условное разбиение;Если ключ находится не в источнике, а в месте назначения.Запись удалена (фактически архивирована).Если ключ находится в источнике, но не в месте назначения.Запись отправляется по пути, который будет вставлен.

Если их ключ существует в ОБА.Затем он отправляется по другому пути - в этом и заключается моя проблема.

В таблице 45 полей (не мое решение!), И мне необходимо обновить запись, если что-то изменилось.В настоящее время я использую «Уточняющий запрос», сопоставляя каждое имеющееся поле друг с другом в кропотливо неловком «перетаскивании слева направо там, где совпадают имена».Это также оказывается медленным время от времени.Не говоря уже об ужасном обслуживании.

Короче говоря: я ищу, как бы вы правильно проверили различия между вашим источником и пунктом назначения?Когда каждое поле может измениться в любое время.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 01 октября 2018

Если предыдущий комментарий верен, есть ли в таблице столбец «Дата последнего обновления», в котором значение даты будет меняться при каждой вставке / обновлении строки?Если да, тогда вашему ETL нужно только выбрать строки, в которых «Дата последнего обновления» больше, чем в последний раз, когда выполнялся ETL, затем использовать идентификатор двух столбцов и «Дата последнего обновления» вместо всех 45 столбцов, чтобы ПРИСОЕДИНИТЬСЯ кисточник и цель.

Компонент SSIS MERGE, безусловно, подходит для этой ситуации, но, честно говоря, его очень сложно использовать.Сторонний инструмент фабрики задач Sentry One (ранее Pragmatic Works) ($$) также работает и менее сложен в использовании.

Удачи.

0 голосов
/ 21 сентября 2018

Это было точно - Кредит для Veljko89

Источник: Union All возвращает дубликаты ???

Решение: Вы можете сделать это SSIS в два этапа:

  • Использовать преобразование слиянием (как вы упомянули выше)
  • Использовать преобразование SORT и отсортировать данные по ContractID, убедившись, что вы отметили флажок «Удалить строки с дубликатами».сортировать значения ".
...