table 的更新策略,在 Informatica 中使用序列生成的数字作为主键

Update strategy for table with sequence generated number as primary key in Informatica

我有一个映射,它从多个 sql 服务器源 table 获取数据,并为每一行分配一个序列生成的编号作为 ID。在目标 table 中,ID 字段设置为主键。

每次我 运行 此映射时,它都会创建新行并为目标中预先存在的记录分配新 ID。下面是一个例子:

1st run:
ID   SourceID   Name   State
1     123        ABC   NY
2      456       DEF   PA

2nd run:
ID   SourceID   Name   State
1     123        ABC   NY
2      456       DEF   PA
3     123        ABC   NY
4      456       DEF   PA

所需的输出必须: 1) 如果源中的记录被更新,则创建一个新行并分配一个新 ID。 2) 如果在源中插入了新行,则创建一个新行并分配一个新 ID。

如何在 Informatica 中获取?

提前致谢!

ID 字段一个 IDENTITY PROPERTY...

Create Table SomeTable (ID int identity(1,1), 
                        SourceID int, 
                        [Name] varchar(64), 
                        [State] varchar(64))

当您插入其中时...您不会为 ID 插入任何内容。例如...

insert into SomeTable
select
   SourceID,
   [Name],
   [State]
from
   someOtherTable

ID 字段将从 1 开始自动递增,每次插入一行时递增 1。关于每次更新或插入另一行时添加行的问题 table,这就是 TRIGGERS 的目的。

我会拿一张传单,假设这里的实际问题是 'How can I tell if the incoming record is neither insert nor update so that I can ignore it'。你可以

a) 在您的源数据中有一些日期字段来标识记录更新的时间,然后将您的源限定符限制为仅选取在上次此映​​射 运行 之后最后更新的记录。 .缺点是如果你不感兴趣的字段被更新那么你会处理很多冗余记录

b) 更好的建议!!配置一个动态查找,它应该存储与 SourceID 匹配的记录的最新状态。然后可以使用newlookuprow指标端口判断记录是insert、update还是no change,在后续的t运行sformation

中过滤掉no change记录