【发布时间】:2020-06-30 11:08:36
【问题描述】:
我有以下数据流:
我在哪里合并:
ODS 左连接:
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
在条件拆分转换中,在我输入的删除条件中:
!ISNULL(EmployeeIdDWH) && ISNULL(CountryIdODS)
并在删除分支后的 OLE DB 命令中:
我正在更新 ODS 中不再存在的记录的 EndDate :
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 中删除,因此我需要将 DWH 中具有 FR 的记录的 EndDate 更新为GETDATE(),如下所示:
EmployeeId CoutryId InsertedDate EndDate
15366 US 2020-03-18 9999-12-31
15366 FR 2020-03-18 2020-03-19
问题是每次我执行程序包时,它总是会更新 DWH 中具有 FR 国籍的记录,但应该只更新一次。
【问题讨论】:
标签: sql-server tsql ssis