使用 INFORMATICA 在数据库中加载时,当同一记录的两个更新出现在一个文件中时会发生什么
what happens when two update for same record comes in one file while loading in DB using INFORMATICA
假设我有一个 table xyz:
id name 添加城市 act_flg start_dtm end_dtm
1 amit abc,z pune Y 21012018 空
并且此 table 是使用 SCD2 使用 Informatica 从文件中加载的。
假设有一个文件包含两条id=2的记录
IE。 2 vipul abc,z 孟买
2 vipul asdf 班加罗尔
谁会加载到数据库中?
嗯 2 种可能性中的 1 种取决于你的意思...如果你的意思是你从不同的源系统中提取数据,而这些系统有时在这些系统上具有相同的 ID 那么它很容易...只需标记两个自然键(即 id)和维度列上的源系统值以及目标唯一的任意代理键 table...(这是一个数据仓库基础,所以请阅读 kimball)。
如果您的意思是您正在以某种方式跟踪源系统中单个记录的实时更改并将这些更改写入您的 etl 作业的输入文件,那么您需要与您的客户达成一致,他们是否对您满意根据更改的时间戳聚合它们,只选择最近的一个或创建 2 个记录,一个设置了到期日期时间,另一个仍然打开(这是标准的 scd 方法......再次阅读 kimball)。
这取决于您执行 SCD 类型 2 的方式。如果您使用静态缓存查找,则两条记录的结束日期都将添加为 null
这种情况下的最佳情况是使用动态查找缓存并以最后读取最新记录的方式读取源数据。这将确保一条记录以结束日期过期并且每个 ID 仅存在一条活动记录(即结束日期为空)。
假设我有一个 table xyz:
id name 添加城市 act_flg start_dtm end_dtm
1 amit abc,z pune Y 21012018 空
并且此 table 是使用 SCD2 使用 Informatica 从文件中加载的。
假设有一个文件包含两条id=2的记录 IE。 2 vipul abc,z 孟买 2 vipul asdf 班加罗尔
谁会加载到数据库中?
嗯 2 种可能性中的 1 种取决于你的意思...如果你的意思是你从不同的源系统中提取数据,而这些系统有时在这些系统上具有相同的 ID 那么它很容易...只需标记两个自然键(即 id)和维度列上的源系统值以及目标唯一的任意代理键 table...(这是一个数据仓库基础,所以请阅读 kimball)。
如果您的意思是您正在以某种方式跟踪源系统中单个记录的实时更改并将这些更改写入您的 etl 作业的输入文件,那么您需要与您的客户达成一致,他们是否对您满意根据更改的时间戳聚合它们,只选择最近的一个或创建 2 个记录,一个设置了到期日期时间,另一个仍然打开(这是标准的 scd 方法......再次阅读 kimball)。
这取决于您执行 SCD 类型 2 的方式。如果您使用静态缓存查找,则两条记录的结束日期都将添加为 null
这种情况下的最佳情况是使用动态查找缓存并以最后读取最新记录的方式读取源数据。这将确保一条记录以结束日期过期并且每个 ID 仅存在一条活动记录(即结束日期为空)。