使用informatica

时间:2018-06-14 15:39:23

标签: etl data-warehouse informatica informatica-powercenter snowflake-datawarehouse

我实现了与下面相同的映射。有人可能会建议这是一个好方法。

从生产中复制旧记录,因此他们没有为这些记录提供标记。只有新记录我们才会得到旗帜。

来源数据:

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。

有人可以建议我如何在不查找的情况下执行此操作吗?

1 个答案:

答案 0 :(得分:0)

根据我对您的问题的理解,您希望确保在将更新应用于同一记录之前在目标中应用插入 - 这是正确的吗?如果是这样,只需使用目标加载计划,该目标加载计划具有路由到相同目标的别名,并且在加载顺序中比更新更高

作为设计选择是否正确的答案取决于目标数据库是什么...对于数据仓库事实表,您通常会插入或更新所有记录,因为您将报告事件而不是记录状态。对于维度表,它将取决于您的缓慢变化的维度策略