Сравните исходную таблицу и промежуточную таблицу - PullRequest
1 голос
/ 08 апреля 2020

Я загружаю свою таблицу Employee из источника в область подготовки, как показано ниже:

enter image description here

SR C содержит T- SQL запрос:

SELECT EmpId,Firstname,Lastname,DeptId,Email,PhoneNumber From dbo.Employee

Поиск подобен приведенному ниже: (Перенаправление на вывод без совпадений) enter image description here

  • Вывод без совпадений: вставить новый записей в промежуточной таблице Сотрудник
  • Вывод соответствия поиска: Обновите старые записи с новостями из источника

Пример:

EmpId Firstname Lastname DeptId Email PhoneNumber
55    Alex      Yves     3      NULL  NULL

Если EmpId не не существует в таблице STG, она будет добавлена. Если у EmpId = 55 есть обновления в источнике, как показано ниже:

EmpId Firstname Lastname DeptId Email            PhoneNumber
55    Alex      Yves     3      alex@company.com +1234567

Как только обновление обнаружено после вывода соответствия поиска, так как EmpId уже существует, обновление повлияет только на EmpId = 55, а не на все существующие такие, как я.

Я хочу обновить только те записи, которые имеют обновления. Как я могу обнаружить обновления для Сотрудника, уже существующие в таблице STG.

1 Ответ

2 голосов
/ 08 апреля 2020

Чтобы ответить на ваш вопрос, вам нужно изменить компонент поиска двумя способами:

  • изменить параметр кэширования на отсутствие кэша
  • На вкладке подключения используйте SQL запрос на объединение идентификаторов сотрудников из целевой таблицы и таблицы этапов

Это решение будет очень медленным по нескольким причинам:

  • Опция no cache будет запрашивать таблица целей и этапов для каждой строки
  • обновления выполняются для каждой строки
  • у вас, вероятно, будут частые взаимоблокировки между 3 компонентами

Более эффективное решение будет чтобы вставить все записи в таблицу этапов, а затем использовать задачу execute sql для вставки и обновления целевой таблицы.

...