У меня есть следующий поток данных:
, где я объединяю:
ODS Left Join:
SELECT bn.EmployeeId
,bn.CountryId
,bn.OdsCreateDate FROM ODS.BridgeNationality bn
WHERE bn.EmployeeId=15366
Правое объединение DWH
SELECT bn.EmployeeId
,bn.CountryId
,bn.InsertDate
,bn.BI_EndDate FROM DWH_Amaris.dwh.BridgeNationality bn
WHERE bn.EmployeeId=15366
Тип объединения слиянием: полное внешнее
В Преобразовании с условным разбиением в условии Удалить I put:
!ISNULL(EmployeeIdDWH) && ISNULL(CountryIdODS)
И в команде OLE DB после ветви удаления:
Я обновляю EndDate записи, которая больше не существует в ODS:
UPDATE [DWH].[BridgeNationality]
SET [BI_EndDate] = GETDATE()
WHERE [EmployeeId] = ?
AND CountryId=?
Как, например, у меня в DWH:
EmployeeId CoutryId InsertedDate EndDate
15366 US 2020-03-18 9999-12-31
15366 FR 2020-03-18 9999-12-31
и в ODS:
EmployeeId CoutryId
15366 US
Мы можем видеть, что национальность FR была удалена в ODS поэтому мне нужно обновить EndDate записи, имеющей FR в DWH, до GETDATE()
, как показано ниже:
EmployeeId CoutryId InsertedDate EndDate
15366 US 2020-03-18 9999-12-31
15366 FR 2020-03-18 2020-03-19
Проблема заключается в том, что каждый раз, когда я выполняю пакет, он постоянно обновляет запись, имеющую национальность FR в DWH однако это должно быть сделано один раз.