Hoje vamos ver um exemplo de como usar o componente UNPIVOT no SSIS. Mas o que é UNPIVOT? O UNPIVOT é utilizado para transformar colunas em linhas, o processo inverso do PIVOT que transforma linhas em colunas. Imagine o seguinte cenário, você está trabalhando com um arquivo texto onde cada linha possui o código do cliente e três colunas de telefone (residencial, comercial e celular).
Você deve carregar esses dados em uma tabela no banco de dados que possui a seguinte estrutura: código do cliente, tipo do telefone (residencial, comercial ou celular) e o número do telefone. Veja que enquanto no arquivo texto temos três telefones por linha para cada cliente, no banco de dados temos um telefone por linha para cada cliente com o tipo do telefone. Para resolver essa situação, vamos transformar esses dados do arquivo texto utilizando o componente UNPIVOT, vamos lá…
Abra o SQL Server Data Tools e crie um novo projeto do SSIS. Adicione no projeto a tarefa Data Flow Task e clique duas vezes (editar) para definir o fluxo.
Agora vamos usar o componente Flat File Source para ler nosso arquivo texto. Adicione o componente no projeto, crie uma nova conexão para o arquivo (Flat File Connection Manager) e você terá algo assim:
Veja que temos quatro colunas, uma com o código do cliente e outras três com o telefone, sendo cada coluna um tipo de telefone. Adicione no projeto o componente Unpivot e conecte o componente Flat File Source com ele. Clique duas vezes no componente para editar.
Vamos selecionar as colunas que vamos transformar em linha, no caso as colunas “TEL_RES”, “TEL_COM” e “TEL_CEL”. Agora vamos definir em Destination Column o nome da nova coluna que receberá esses dados, nesse caso será “TELEFONE”.
Você pode definir um novo valor para cada coluna que se tornará linha ou deixar o nome original da coluna, nesse caso vamos alterar o valor em Pivot Key Value para cada coluna com os tipos “RESIDENCIAL”, “COMERCIAL” e “CELULAR”. Agora com os novos valores vamos definir em Pivot Key Value Column Name o nome da nova coluna que irá representar o tipo do telefone, nesse caso com o nome “TIPO”.
Tudo pronto, vamos adicionar no projeto o componente OLE DB Destination conectar o componente Unpivot com ele e definir a conexão com o banco de dados SQL Server e a tabela que receberá esses dados, logo após vamos definir o mapeamento das colunas conforme abaixo.
Execute o projeto.
Agora o resultado da transformação.
Até a próxima…
Muito bom o post !
CurtirCurtir