2013-01-31 3 views
0

J'ai deux sources de données OLE DB. on a les colonnesFusionner la transformation de jointure - faire correspondre plusieurs colonnes

ID, Prime

et l'autre a

ID, Premium, Coût

Ils sont tous les deux dans le même flux de données et à la fois triés. Je les utilise tous les deux comme source pour une transformation de fusion de jointure. Je l'ai dit que ID et Premium sont les mêmes.

J'espérais que la sortie de cette jointure de fusion ne serait que sur des lignes où l'ID et Premium correspondent tous les deux. Au lieu de cela, ce que je suis en train d'obtenir, ce sont des lignes qui correspondent à soit Id ou Premium.

Il est défini pour être une jointure interne car je ne veux pas obtenir des colonnes avec Nulls/non correspond à traîner.

Est-ce que quelqu'un sait comment atteindre la sortie désirée? Est-ce que j'utilise le bon outil de transformation pour y parvenir?

+1

Vous devez utiliser la transformation Recherche et rechercher le coût et mapper uniquement la sortie correspondante à la table de destination. J'espère que cela t'aides! – Gowdhaman008

+1

Exactement ce que @ Gowdhaman008 a dit. À moins que vous n'ayez une raison d'utiliser la fusion de fusion de fusion, vous obtiendrez de meilleures performances de votre paquet en utilisant la transformation de recherche. Et si les deux sources OLE DB se trouvent dans la même base de données et/ou instance, il suffit d'écrire une jointure interne et de laisser la base de données la gérer. Ce sera beaucoup plus efficace que SSIS car il peut tirer parti des index existants tandis que SSIS devra le construire en mémoire. – billinkc

Répondre

2

Vous utilisez la transformation correcte. Cependant, par défaut, la transformation de fusion de fusion traite les valeurs NULL comme égales. Vous pouvez désactiver cela en définissant la propriété TreatNullsAsEqual de la transformation sur false. De cette façon, vous devriez obtenir le même résultat qu'une requête SQL normale.

Questions connexes