代码之家  ›  专栏  ›  技术社区  ›  Subas

Informatica中以序列生成数为主键的表更新策略

  •  0
  • Subas  · 技术社区  · 7 年前

    我有一个映射,它从多个sql server源表中获取数据,并为每行分配一个序列生成的编号作为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。

    如何在Informatica中获得?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Daniel Machet    7 年前

    我会拿一张传单,假设这里的实际问题是“我如何判断传入的记录是否既不是插入的,也不是更新的,这样我就可以忽略它”。你可以

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

    b) 更好的建议!!配置动态查找,该查找应存储由SourceID匹配的记录的最新状态。然后,您可以使用newlookuprow指示符端口来判断记录是插入、更新还是未更改,并在后续转换中过滤出未更改的记录

        2
  •  0
  •   S3S    7 年前

    给出 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。关于您关于每次更新行或将行插入另一个表时添加行的问题,这是什么 TRIGGERS