0

J'ai un mappage qui obtient des données à partir de plusieurs tables source de serveur sql et affecte un numéro généré par séquence en tant qu'ID pour chaque ligne. Dans la table cible, le champ ID est défini en tant que clé primaire.Mise à jour de la stratégie pour table avec numéro de séquence généré en tant que clé primaire dans Informatica

Chaque fois que j'exécute ce mappage, il crée de nouvelles lignes et attribue un nouvel ID aux enregistrements qui sont préexistants dans la cible. Voici un exemple:

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 

sortie désiré doit: 1) créer une nouvelle ligne et attribuer un nouveau numéro si un enregistrement est mis à jour dans la source. 2) créer une nouvelle ligne et attribuer un nouvel ID si de nouvelles lignes sont insérées dans la source.

Comment cela peut-il être obtenu dans Informatica?

Merci d'avance!

+0

Pourriez-vous préciser la question, c'est-à-dire que vous avez déjà une correspondance qui remplit les exigences ou il y a un aspect de l'exigence que la cartographie n'est pas satisfaisante. S'il vous plaît aviser qui localiser spécifiquement quelle partie de l'exigence ne fonctionne pas –

Répondre

0

Je vais prendre un dépliant et supposer que la question RÉELLE est ici «Comment puis-je savoir si l'enregistrement entrant n'est ni inséré ni mis à jour pour que je puisse l'ignorer». A) avoir un champ de date dans vos données source pour identifier quand l'enregistrement a été mis à jour et ensuite restreindre votre qualificatif source pour ne récupérer que les enregistrements qui ont été mis à jour après la dernière exécution de ce mappage ... Si les champs qui ne vous intéressent pas ont été mis à jour, vous devrez traiter beaucoup d'enregistrements redondants

b) meilleure suggestion !! Configurez une recherche dynamique qui doit stocker l'état le plus récent d'un enregistrement correspondant à l'ID source. Ensuite, vous pouvez utiliser le port de l'indicateur newlookuprow pour indiquer si l'enregistrement est une insertion, une mise à jour ou aucune modification et filtrer les enregistrements sans changement dans une transformation suivante

+1

Merci pour votre suggestion Daniel! J'ai utilisé une recherche dynamique, un routeur, et une stratégie de mise à jour pour obtenir ce dont j'avais besoin et son fonctionnement parfaitement :) – Subas

+0

Content de l'entendre. Merci d'avoir pris le temps de poster vos résultats –

0

donne le champ ID un IDENTITY PROPERTY ...

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

Lorsque vous insérez dans ... vous n'insérez rien pour ID. Par exemple ...

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

Le champ ID sera un incrément automatique à partir de 1 et l'incrément de 1 chaque fois est inséré une ligne. En ce qui concerne votre question sur l'ajout de lignes chaque fois que l'on est mis à jour ou inséré dans une autre table, c'est ce que sont TRIGGERS.

+0

Je pense que vous vouliez commenter le message original, pas ma réponse @DanielMachet – scsimon

+0

Wow thats rapide sur le tirage –