ODS中删除一条记录时设置EndDate为GetDate()
Set EndDate to GetDate() when a record is deleted in the ODS
我有以下数据流:
我要合并的地方:
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 中不再存在的记录的结束日期:
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
我们可以看到 ODS 中的 FR 国籍已被删除,因此我需要将 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 国籍的记录,但是它应该完成一次。
您必须添加记录的结束日期为“9999-12-31”,如下所示:
!ISNULL(EmployeeIdDWH) && ISNULL(CountryIdODS) && BI_EndDate == (DT_DATE)"9999-12-31"
否则,更新将像您的情况一样无限。
我有以下数据流:
我要合并的地方:
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 中不再存在的记录的结束日期:
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
我们可以看到 ODS 中的 FR 国籍已被删除,因此我需要将 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 国籍的记录,但是它应该完成一次。
您必须添加记录的结束日期为“9999-12-31”,如下所示:
!ISNULL(EmployeeIdDWH) && ISNULL(CountryIdODS) && BI_EndDate == (DT_DATE)"9999-12-31"
否则,更新将像您的情况一样无限。