Eu tenho um pacote para combinar dados de vários bancos de dados. Estou tentando reunir dois conjuntos de dados para que possam ser gravados em uma única tabela.
Há um comum SSIS_ID (DT_I4)
usado para corresponder linhas e as outras colunas que desejo trazer para o mesmo conjunto de dados também são DT_I4
.
Aqui está a seção do fluxo onde está o problema; como você pode ver, os dados de ambos os caminhos são classificados SSIS_ID
antes de entrar no Merge:
E aqui está a configuração do componente Merge. A intenção é colocar o CRO_CompanyID
e Sponsor_CompanyID
para o mesmo SSIS_ID
em uma única linha:
No entanto, a saída da mesclagem está agindo como um UNION
; há 1.532 linhas entrando pela esquerda e 4.303 pela direita, resultando em 5.835 linhas na saída.
Um visualizador de dados na saída mostra o problema:
Posso contornar esse problema processando os dados de uma maneira diferente, mas estou realmente me incomodando por não conseguir fazer isso funcionar.
Alguma sugestão sobre o que fiz de errado ou não fiz para poder combinar os dados dessa maneira?
Estou usando o SSIS para SQL Server 2008, mas não havia uma tag para essa versão.
O problema é que você está usando a transformação errada.
"A transformação Merge é semelhante às transformações Union All." - Transformação de Mesclagem do MSDN
Você pode usar a transformação Merge Join e especificar seu tipo de junção e, em seguida, selecionar a coluna de entrada usada para cada saída.
Então você pode obter a saída desejada:
Se a(s) sua(s) fonte(s) for(em) um sistema RDBMS, é melhor classificar com um
ORDER BY
em vez de usar uma tarefa de classificação, pois é um componente de bloqueio e o banco de dados provavelmente pode executar a classificação mais rapidamente.