我实现了与下面相同的映射。有人可能会建议这是一个好方法。
从生产中复制旧记录,因此他们没有为这些记录提供标记。只有新记录我们才会得到旗帜。
来源数据:
col1 col2 col3 DML_FLAG
1 a 123 NULL(old record)
2 b 456 I
3 c 678 U
映射:
Source...>SQ...>exp...>lkp(on target to identify new or update)
..>exp..>...>RTR(for insert and update)-->upd(for update)...>target
第一次加载我必须加载所有记录,即满载(旧记录(DML_flag为空)和新记录
从第二次运行开始,我必须仅从源中捕获已更改的记录。为此,我使用映射变量
这里我有一个问题,我们已经在源代码中可以使用I和U标志我使用LKP,在查找时,我可以在RTR中使用DML_FLAG和I和U两个组。
但我需要每隔30分钟更新一次数据,在30分钟内插入一条记录(I)并更新相同的记录,然后将标记更改为“' U'在源代码中,目标中没有相同的记录,在这种情况下,如何使用标记“U'”来捕获该记录。没有lkp。
有人可以建议我如何在不查找的情况下执行此操作吗?
答案 0 :(得分:0)
根据我对您的问题的理解,您希望确保在将更新应用于同一记录之前在目标中应用插入 - 这是正确的吗?如果是这样,只需使用目标加载计划,该目标加载计划具有路由到相同目标的别名,并且在加载顺序中比更新更高
作为设计选择是否正确的答案取决于目标数据库是什么...对于数据仓库事实表,您通常会插入或更新所有记录,因为您将报告事件而不是记录状态。对于维度表,它将取决于您的缓慢变化的维度策略