top of page
  • Foto do escritorGabriel Quintella

SQL Server Integration Services, Trabalhando com componente Union All

Atualizado: 26 de nov. de 2021

Fala meu amigo tudo bem com você? Está acompanhando a nossa série? Caso positivo, está gostando? São tantas perguntas!!!! É verdade, mais isso é muito importante para o desenvolvimento desse trabalho que venho fazendo, preciso saber o que está bom, o que precisa melhor e claro, se tiver algum ruim, precisamos atacar urgente! Comenta ai, é rapidinho!


No post anterior, comentei sobre o componente Derived Column, um componente bem útil e que ajuda a fazer bastante coisa.


Hoje o nosso foco será abordar o componente Union All. Esse componente tem a mesma funcionalidade do comando SQL UNION, porém com uma grande diferença, ele não executa o famoso SELECT DISTINCT no result set final com isso apresenta todas as linhas, inclusive as duplicadas.


Vamos iniciar os trabalhos, porém não posso deixar de fazer uma breve introdução de como iremos trabalhar nesse post.


1 - Criação de um projeto SSIS - Sempre que trabalhamos com SSIS, existe a necessidade de realizar a criação de um projeto no Visual Studio, caso tenha criado nos posts anteriores, pode utilizar sem problemas, porém caso não tenha trate de criar pois é um item obrigatório! Dentro desse projeto vamos armazenar todos os pacotes de ETL;


2 - Criação de um pacote de ETL - Quando falamos em pacotes de ETL, estamos nos referindo ao conjunto de fluxos que será usado para trafegar com a nossa informação da sua origem até seu destino. Recomento que caso esteja acompanhando nossa série, crie um pacote para cada item, fica mais fácil o entendimento;


3 - Criando/Configurando as conexões - Vamos utilizar nesse nosso post duas conexões, na verdade três. Para o Source serão duas, ambas do tipo Flat File pois iremos consumir dois arquivos CSV e a do Destination, será com o Microsoft SQL Server, pois vamos gravar o resultado da nossa carga dentro de uma tabela. Esse é o passo onde definimos as conexão;


4 - Criando nosso Fluxo de Dados


4.1 - Componentes que serão usados - Nesse primeiro exemplo, vamos trabalhar com Três componentes: Source Assistant, responsável pela conexão com a origem. Vamos importar um arquivo CSV, iremos usar também o componente Union All pois vamos unificar duas origens (dois arquivos CSV) e por último o componente Destination Assistant que será usado para definir o destino dos dados.


4.2 - Criando nosso destino dos dados (Tabela) - Vamos criar uma tabela para receber os dados;


5 - Visualizando os dados carregados - E por último, vamos visualizar como que ficaram os dados carregados em nossa tabela.


Mão a obra! Pois camarão que dorme a onda leva...


1 - Criando um Projeto no SQL Server Integration Services


Vou considerar que você não tem nenhum projeto criado no Visual Studio do SQL Server Integration Service. Um ponto bem importante desse estudo é que não irei falar como que você realiza a configuração do seu ambiente, entenderei que você já tenha feito isso em outro momento.


Para criar um projeto é bem simples. Vamos abrir o Visual Studio e seguir os próximos passos.


(1) Selecionar File;

(2) New;

(3) Project;

(4) Caso tenha um projeto criado basta clicar em Open Project.



Após clicar em New Project, a tela abaixo será apresentada.


(1) Escolher Integration Services;

(2) Integration Services Project;

(3) Informar um nome para o Projeto;

(4) Definir o local (diretório) que o projeto será gerado;

(5) Informar uma nomenclatura para a sua solução;

(6) Caso queira que um diretório para o projeto seja criado basta marcar essa opção;

(7) Clicar em OK para realizar a criação;



2 - Criando nosso Pacote de ETL


Primeiro ação será a criação de um pacote do SSIS. Essa criação é bem simples, acompanha comigo.


(1) Clicar com o botão direito do mouse sobre SSIS Package;

(2) Clicar em New SSIS Package;


Além dessa possibilidade, outras ações podem ser realizadas.


  • Importar um Arquivo dtsx - basta clicar em Add Existng Package;

  • Realizar o Upgrade dos seus pacotes - basta clicar sobre Convert Deployment Model ou Upgrade All Package;

  • Realizar um Import and Export - basta clicar sobre SSIS Import and Export Wizard;

  • Ordenar seus pacotes - basta clicar em Sort by name.



Após a criação do nosso arquivo dtsx, vamos para o desenho do nosso fluxo.


(1) Nome do arquivo dtsx;


Para alterar basta clicar sobre ele e apertar o botão F4 e em file name informar o nome do seu pacote.



Ou clicar sobre o pacote e apertar F2



(2) Aba Control Flow;

(3) Inserir um componente de Data Flow Task;

(4) Realizar duplo clique ou clicar em Data Flow.



Ao clicar em Data Flow, vamos começar a brincadeira! Dessa vez vamos fazer iguais aos filmes de Hollywood começando do final. Apresento para você como que será o resultado final desse nosso trabalho (1).



Vamos trabalhar então para produzir mais esse conteúdo.


3 - Criando as Conexões


Primeiro passo será realizar a configuração das nossas conexões.


(1) Aba Connection Manage;

(2) Clicar com o botão direito do mouse e escolher New OLE DB Connection;



A próxima configuração será referente ao nosso destino, ou seja, onde os dados serão gravados.


Como destino, escolhemos o Microsoft SQL Server, acompanha comigo.


(1) Na aba Connection Manager, vamos clicar com o botão direito e selecionar OLE DB Connection Manager. Na tela que será apresentada, vamos clicar em New;

(2) Selecionar Native OLE DB\SQL Server Native Client 11.0;

(3) Informar o nome do servidor\instância;

(4) Selecionar o método de conexão;

(5) Selecionar o banco de dados. Clicando na setinha pra baixo é possível visualizar todos os bancos existentes em nosso servidor;

(6) Clicar em Test Connection para validar a conexão (Sempre comento que esse passo é desnecessário, pois ela já foi validada no passo anterior);

(7) Clicar em OK para finalizar.



O próximo passo é realizar a configuração de duas conexões para os arquivos.


Primeiro vamos utilizar o arquivo do AC (Acre).


(1) Aba Connection Manage;

(2) Clicar com o botão direito do mouse e escolher New Flat File Connection;



Após selecionar esse tipo de conexão, vamos partir para configuração.


(1) Informar um nome para a conexão;

(2) Primeira configuração será na aba General;

(3) Selecionar o local onde está o nosso arquivo;

(4) Configurações referente ao nosso arquivo (Se ele é delimitado ou não, se possui um qualificador de texto, se a primeira linha do arquivo contém ou não o cabeçalho das colunas etc);

(5) Clicar em OK para confirmar.



E agora o arquivo do AM (Amazonas). Idêntico ao anterior.


(1) Aba Connection Manage;

(2) Clicar com o botão direito do mouse e escolher New Flat File Connection;



Após selecionar esse tipo de conexão, vamos partir para configuração.


(1) Informar um nome para a conexão;

(2) Primeira configuração será na aba General;

(3) Selecionar o local onde está o nosso arquivo;

(4) Configurações referente ao nosso arquivo (Se ele é delimitado ou não, se possui um qualificador de texto, se a primeira linha do arquivo contém ou não o cabeçalho das colunas etc);

(5) Clicar em OK para confirmar.



4 - Criando o Fluxo de Dados


Na aba Control Flow, vamos selecionar seguir os seguintes passos.


(0) Podemos observar que as conexões estão criadas e disponíveis;

(1) Em SSIS Toolbox o componente Data Flow Task;

(2) Sobre o componente Data Flow Task, vamos clicar com o botão direito;

(3) Clicar em Rename.



Na próxima tela conseguimos visualizar o esqueleto (1) do nosso motor.



4.1 - Configurando o Componente Source Assistant


Conforme imagem anterior, vamos fazer uso de 3 componentes! Um para a nossa origem de dados, uma para unir as duas origens e um para o destino dos dados.


Vamos começar pelo Source Assistant, lembrando que iremos utilizar dois componentes de Source pois iremos fazer uso de dois arquivos!


(1) Em SSIS Toolbox, vamos selecionar o componente Source Assistant;

(2) Feito isso a tela ao centro será carregada;

(3) Como nossa origem será um arquivo, vamos selecionar Flat File;

(4) Selecionar a conexão que criamos;

(5) Observe que algumas informações referente a origem do arquivo é apresentada;

(6) Clicar em OK para confirmar.



Na tela seguinte a configuração do último Source Assistant, esse passo é idêntico ao anterior!


(1) Em SSIS Toolbox, vamos selecionar o componente Source Assistant;

(2) Feito isso a tela ao centro será carregada;

(3) Como nossa origem será um arquivo, vamos selecionar Flat File;

(4) Selecionar a conexão que criamos;

(5) Observe que algumas informações referente a origem do arquivo é apresentada;

(6) Clicar em OK para confirmar.



Vamos incluir o componente de UNION ALL em nosso fluxo.


4.2 - Configurando o Componente Union All


Agora vamos incluir em nosso fluxo o componente Union All. A utilização desse componente será útil para promover a unificação de duas origens para facilitar o processo de inserção dos dados em nosso destino.


Segue aqui comigo!


(1) Em SSIS Toolbox, vamos selecionar o componente UNION ALL;

(2) Componente incluído no fluxo.



A na próxima tela vamos montar ligar os pontos, ou seja, selecionar a primeira origem e relacionar com o componente Union All e em seguida, selecionar a segunda origem e ligar com o componente.


(0) Duplo clique no componente Union All;

(1) Selecionar a primeira origem;

(2) Selecionar a segunda origem.



Feito isso, o próximo passo é fazer a inclusão do nosso Destination.


4.3 - Configurando o Componente Destination Assistant


Dentro do fluxo, vamos iniciar o último passo. Selecionar o nosso destino! É bem semelhante aos anteriores. Siga comigo!


(1) Em SSIS Toolbox, vamos selecionar o componente Destination Assistant;

(2) Feito isso a tela ao centro será carregada;

(3) Como nossa origem será um arquivo, vamos selecionar SQL Server;

(4) Selecionar a conexão que criamos;

(5) Observe que algumas informações referente ao destino do arquivo é apresentada;

(6) Clicar em OK para confirmar.



Voltando na tela que trabalhamos anteriormente, agora vamos realizar o vinculo entre os componentes.


(1) Primeiro vamos relacionar o Source;

(2) Depois vamos relacionar o outro componente de Source;

(3) Vamos dar um duplo clique no no componente de Union All para correlacionar as colunas;

(4) Colunas que serão carregadas, esse nome pode ser alterado;

(5) Clicar em OK para confirmar.



Da mesma forma que no Source selecionamos a origem da informação, nesse passo vamos selecionar o nosso Destino.


(1) Duplo clique no componente OLE DB Destination;

(2) Na aba Connection Manager;

(3) Selecionar a conexão com o banco de dados;

(4) Caso a sua conexão não exista, é possível cria-lá;

(5) Selecionar o modo de carga de dados;

(6) Selecionar em qual tabela os dados serão gravados;

(7) Do mesmo modo que ocorre na conexão, a tabela de destino também pode ser criada caso não exista;

(8) Podemos visualizar se existe algum registros em nosso destino;

(9) Clicar em OK para finalizar a configuração.



Continuando na configuração do nosso Destination, vamos realizar o mapeamento entre a origem e destino. Nada muito complexo, acompanha ai...


(1) Após dois cliques no componente Destination, uma tela semelhante a de baixo será carregada, vamos clicar em Mappings;

(2) A origem e destino serão apresentadas;

(3) Origem dos dados;

(4) Destino dos dados;

(5) Alterei o mapeamento para carregar as colunas criadas no passo anterior

(6) Clicar em OK para finalizar.


Observem que quando clicamos na aba Mappings, as colunas já serão carregadas com o mapeamento feito. Isso ocorre justamente porque por default, o mapeamento é feito sempre por igualdade de nome. Mais ele pode ser alterado a qualquer momento.



Para finalizar nossa configuração, vamos incluir um componente que será usado por limpar nosso destino sempre antes da carga.


4.4 - Configurando o Componente Execute SQL Task


(1) Clicar na aba Control Flow, depois clicar em SSIS Toolbox e selecionar o componente Execute SQL Task;

(2) Nome do componente;

(3) Nesse passo vamos configurar apenas a aba General do componente Execute SQL Task;

(4) Informar o nome desse passo dentro do nosso fluxo;

(5) Selecionar a conexão, vamos usar a que criamos anteriormente;

(6) Incluir um script de TRUNCATE TABLE;

(7) Clicar em OK para finalizar.



Pronto, configuração realizada, vamos agora executar e visualizar os dados.


(1) Fluxo dos dados;

(2) Vamos conectar em nosso servidor;

(3) Selecionar nosso banco de dados;

(4) Tabela em que os dados foram carregados;

(5) Comando de consulta dos dados.



Os arquivos usados até aqui estão disponíveis em:



5 - Conclusão


Muito bem meu amigo, conseguimos concluir mais um episódio da nossa série Não Mexa nos Meus Componentes.


Abordamos hoje um componente que é muito útil quando precisamos realizar a união de fontes distintas. Esse utilização tem a mesma definição do comando Union All quando trabalhamos com ele escrevendo uma consulta SQL, ele irá trabalhar sem aplicar o famoso SELECT DISTINCT, ou seja, ele não elimina linhas duplicadas, caso exista essa possibilidade em seu processo, deverá combinar com o componente Aggregate para eliminar a duplicidade.


Espero que tenha ficado claro para você como aplicamos esse componente.


Em nosso próximo post, iremos abordar o componente Aggregate, esse vai ser super bacana, não irei soltar nenhum spoiler, te vejo em breve! Grande abraço e fique com Deus!


36 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page