首页 > 解决方案 > 如何将 ODI 配置为自动增加行以进行 IKM 增量更新

问题描述

我对我的“维度”和 IKM 的自动增量 ID 有疑问:增量更新。

我有只有一列的源表:SUPPLIER_NAME。它有 23 行供应商名称。

我有两列的目标表:SUPPLIER_ID、SUPPLIER_NAME

接下来我想在 SUPPLIER_ID 上为每个新行创建自动增量 ID 并使用 IKM:增量更新 - 有人添加新供应商我只想要更新表(添加新行)并为此供应商添加新 ID(自动增量的下一个值)。

我怎样才能做到这一点?

我在数据库上创建序列,如:

Create sequence autoinc start with 1  
increment by 1  
minvalue 1  
maxvalue 1000000;  

在 ODI 中,我创建序列:AutoIncrementDIm --> Increment: 1, Native seuqence - native 序列名称:autoinc

接下来我创建 ODI 映射:

源表(带有一列)映射到目标表(带有 ID 和 NAME)。

将供应商名称映射到供应商名称

对于我使用的 ID:#NFS_HD.AutoIncrementDim_NEXTVAL

在逻辑部分我设置了集成类型:增量更新在我为 IKM 设置的物理部分:IKM Oracle Merge

对于我的第一次运行一切都很好。我对每个供应商都有从 1 到 23 的自动增量。

但是当我在源表中有新的供应商名称的新行并运行我的映射时,我会得到类似的东西:

结果

新行(带有新供应商)有 47 个 ID ...我认为这是因为序列正在为每一行运行。

我必须改变什么才能纠正或这样做的更好解决方案是什么?

标签: oracleoracle-data-integrator

解决方案


在逻辑映射上,单击您的SUPPLIER_ID目标属性。在“目标”选项卡的属性窗格中,取消选中“更新”复选框。这意味着该属性不会在更新查询中使用。

在此处输入图像描述

还要确保将SUPPLIER_NAME属性设置为键,以便 IKM 使用它来了解何时应该执行插入或更新。


推荐阅读