Salve salve meu amigo! Que gratidão poder trazer mais um assunto novo até você. Abro nesse post uma nova série, porém agora falando sobre Microsoft SQL Server Integration Services.
Não passarei sobre os pontos relacionados a instalação e configuração do ambiente, isso será abordado em outro post. Irei considerar que você já tenha todo o ambiente montado. Caso não tenha, manda um mensagem que envio o passo a passo para a configuração.
O objetivo dessa série será passar pelos principais componentes e como podemos aplicar eles em nosso dia a dia de construção de pacotes ETL com o SSIS.
Bora pra dentro então...
Já ia esquecendo, busquei uma breve descrição para essa incrível ferramenta da Microsoft.
O SQL Server Integration Services é uma plataforma para criar integração de dados em nível empresarial e soluções de transformações de dados. Use Integration Services para solucionar problemas empresariais complexos copiando ou baixando arquivos, carregando data warehouses, limpando e minerando dados e gerenciando objetos SQL Server e dados. Fonte https://docs.microsoft.com/pt-br/sql/integration-services/sql-server-integration-services?view=sql-server-ver15
Procurei fazer uma abordagem sobre SSIS e montei um material super bacana e tenho certeza que você irá curti bastante.
Nesse primeiro post faremos um overview e um breve exemplo de como podemos trabalhar com o SSIS.
A partir da versão 2012 do Microsoft SQL Server, o SSIS passou por uma grande evolução. O que antes era desenvolvido dentro do BIDS (Business Intelligence Development Studio) após essa evolução, passou a ser criado no Visual Studio com a utilização do Microsoft Data Tools e foi uma grande evolução, podemos dizer que saiu da água pro vinho, ficando bem mais robusto.
Antes de iniciar vou fazer um briefing do que iremos para realizar a importação de um arquivo...
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. Dentro desse projeto vamos armazenar todos os pacotes de ETL;
2 - Criação do nosso primeiro 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;
3 - Criando/Configurando as conexões - Vamos utilizar nesse nosso projeto duas conexões, uma entre o arquivo CSV (Origem) e a outra com o Microsoft SQL Server (Destino). 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. Como estaremos trabalhando com a importação de um arquivo CSV, ele será do tipo Flat File Source, vamos usar também o componente Conditional Split pois iremos carregar apenas os dados de um determinado município e 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;
4.3 - Debugando nosso Fluxo - Para validar o fluxo, vamos fazer uso do componente Data Viewer;
5 - Visualizando os dados carregados - E por último, vamos visualizar como que ficaram os dados carregados em nossa tabela.
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;
Na próxima tela vou fazer uma breve apresentação da tela inicial do nosso projeto.
(1) Área denominada Control Flow, é onde você lida com o fluxo de operações ou Tarefas;
(2) Connection Manager - Área onde as conexões são criadas. É usada para configurar uma conexão entre o SSIS e uma fonte de dados externa;
(3) Solution Explorer - área onde os pacotes, parâmetros e conexões são armazenados;
(4) SSIS Toolbox - área onde estão os componentes que podem ser usados nos pacotes SSIS.
Existe também um outro ponto que não foi mencionado que é o Data Flow, ela a parte do pacote do SSIS, onde os dados são extraídos usando fontes de fluxo de dados. Depois de extrair os dados, podemos aplicar as transformações de fluxo de dados, como conversão de dados, criar uma coluna derivada, é usada também para implementar lógicas de negócios e por último serem gravadas em vários tipos de destinos.
Bora pra próxima tela...
2 - Criando nosso Primeiro 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.
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 Flat File Connection;
Nesse momento vamos configurar a conexão com o arquivo CSV.
O conector Flat File Connection possui 4 abas: General, Columns, Advanced e Preview.
(0) Aba General;
(1) Informar o nome para a nossa conexão;
(2) Selecionar o local onde está o arquivo;
(3) Selecionar o enconding dos dados;
(4) Selecionar o delimitador de dados caso exista;
(5) Informar se a primeira linha do arquivo possui o cabeçalho ou não;
(6) Clicar em OK para finalizar (não vamos clicar nesse momento, vamos explorar as outras abas).
Continuando a configuração...
(0) Aba Columns;
(1) Não precisa informar novamente o nome para a conexão, esse passo foi realizado anteriormente;
(2) Selecionar o delimitador de linha;
(3) Selecionar o delimitador de coluna;
(4) Prévia dos dados
(5) Clicar em OK para finalizar (não vamos clicar nesse momento, vamos explorar as outras abas).
E para finalizar...
(0) Aba Advanced;
(1) Não precisa informar novamente o nome para a conexão, esse passo foi realizado anteriormente;
(2) Listagem das colunas do arquivo (caso você tenha informado na aba General que a primeira linha é o cabeçalho, ela será carregada e apresentada nesse passo);
(3) É possível alterar o nome das colunas, o tipo do dado (datatype) e etc;
(4) É possível incluir uma nova coluna;
(5) É possível eliminar uma coluna;
(6) Nesse passo é possível sugerir ao SSIS a definição do datatype;
(7) Clicar em OK para confirmar.
Não estarei apresentando a aba Preview, pois ela é bem semelhante a visualização da aba Columns.
Configuração da conexão da conexão com o arquivo CSV concluída, vamos avançar para a configuração da conexão com o Microsoft SQL Service On Premise.
Vamos avançar para a próxima conexão...
(1) Clicar com o botão direito;
(2) Clicar em New OLE DB Connection.
Ao clicar em New OLE DB Connection, a tela a seguir será apresentada.
Acompanha aqui comigo...
(1) Clicar em New;
Após clicar em New uma nova tela (Connection Manager) será carregada
(2) Como estaremos usando o Microsoft SQL Server On Premise, vamos selecionar Native OLE DB\SQL Server Native Client 10.0;
(3) Informar o Nome\Instância (Server Name) do SQL Server;
(4) Vamos selecionar User SQL Server Authentication e informar um usuário e senha;
(5) Selecionar o banco de dados;
(6) Clicar em Test Connection para validar a conexão (Dica: Caso os bancos de dados tenham sido listados no passo (5), a conexão já foi validada, ou seja, nem precisa clicar nesse passo);
(7) Clicar em OK para confirmar a configuração.
Bem! Fechamos aqui a configuração das conexões. Precisamos levar em consideração que elas foram criadas da forma mais básica, para melhorar esse processo podemos realizar a sua configuração usando parâmetros, mais não é o nosso objetivo por enquanto, quando iniciarmos a série Desbravando o SSIS esses pontos serão esmiuçados.
Conexões criadas, vamos avançar agora para a configuração do nosso Data Flow.
4 - Criando o Fluxo de Dados
Agora vai ficar bastante interessante, vamos avançar juntos? Bora então...
(1) Conexões definidas com sucesso;
(2) Componente Data Flow Task adicionado com sucesso;
(3) Vamos renomear ele e para isso basta clicar com o botão F2;
(4) Vamos clicar em Data Flow para desenhar nosso fluxo.
Na próxima tela apresento como que nosso fluxo será composto.
(1) Flat File Source (Source) - será um conector para o arquivo CSV;
(2) Condicional Split - será usado para filtrar apenas os registros do município CAPIXABA;
(3) OLS DB Detination (Destination) - será o conector com o Microsoft SQL Server;
Primeiro passo desse novo ciclo será realizar a configuração do Source.
4.1 - Configurando o Componente Source Assistant
(1) Arrastar o componente Source Assistant para a área de Data Flow;
(2) Vamos realizar as configurações, basta selecionar caso já existam prontas;
(3) Em Source type, vamos selecionar Flat File;
(4) Selecionar a nossa conexão criada anteriormente;
(5) Será apresentada a informação de onde o arquivo é disponibilizado;
(6) Clicar em OK para concluir.
Bora avançar...
O próximo passo será configurar o componente Condicional Split.
4.2 - Configurando o Componente Condicional Split
(1) Adicionar ele na área de Control Flow;
(2) Após clicar duas vezes sobre o componente uma tela será apresentada;
(3) Em Output Name vamos informar um nome para o nosso fluxo e em Condition definir a regra;
(4) Clicar em OK para seguir.
E para finalizar a seleção dos componentes que serão utializados, vamos configurar agora o componente de Destination Assistant. Esse passo é bem semelhante com o que realização a configuração do Source...segue ai
4.3 - Configurando o Componente Destination Assistant
(1) Arrastar o componente Destination Assistant para a área de Data Flow;
(2) Vamos realizar as configurações, basta selecionar caso já existam prontas;
(3) Em Source type, vamos selecionar SQL Server;
(4) Selecionar a nossa conexão criada anteriormente;
(5) Será apresentada a informação de conexão com o nosso banco de dados;
(6) Clicar em OK para concluir.
4.4 - Configurando Relacionamento entre os Componentes Condicional Split e Destination Assistant
Precisamos agora relacionar os componentes, muito fácil! Basta clicar sobre o componente Conditional Split e uma seta azul e uma vermelha serão apresentadas. Vamos seguir os passos agora...
(1) Clicar sobre o componente Conditional Split, após isso clicar sobre a seta azul e arrastar até o componente OLE DB Destination;
(2) Ao realizar essa ligação, esse tela será apresentada para que você posso selecionar o fluxo;
(3) Vamos clicar no botão da setinha pra baixo e selecionar o fluxo que criamos no passo anterior;
(4) Ao escolher, o botão OK será habilitado, basta clicar nele para seguir.
4.5 - Criando Tabela Destino no Microsoft SQL Server
Com o nosso fluxo ponta a ponta criado quase que 100%, vamos criar nossa tabela no Microsoft SQL Server para receber os dados.
(1) Conectar em nosso servidor;
(2) Selecionar nosso banco de dados;
(3) Executar o script para criação da tabela.
Após a criação da tabela, vamos associa-la em nosso componente de destino.
Para isso primeiro passo é clicar duas vezes sobre ele e seguir os passos abaixo.
(1) Nosso componente é composto de três abas: Connection Manager, Mappings e Error Output. Nesse exemplo vamos trabalhar apenas com as duas primeiras. A última é usada para que possamos fazer alguma tratativa em caso de erro na inserção dos dados;
(2) Selecionar a conexão que criamos nos primeiros passos;
(3) Clicar na setinha para selecionar a nossa tabela criada no passo anterior;
(4) Clicar em OK para seguir.
Nesse momento vamos falar da aba Mappings, conforme o próprio nome, ela serve para realizar o mapeamento entre as colunas da origem com o destino.
(1) Aba Mappings;
(2) Colunas do Source;
(3) Colunas do Destination;
(4) O SSIS permite que você faça o mapeamento automático a partir da igualdade de nome entre as colunas. Para realizar isso, basta clicar na área em branco existente entre as colunas do Source e Destination e selecionar a opção Map Items by Matching Names;
(5) Mapeamento realizado, basta clicar em OK para seguir.
Apenas para reforçar uma informação já passada acima, é possível e recomendado que você nomeie todos os passos do seu fluxo, isso facilita tanto no entendimento do seu processo quanto na resolução de algum eventual erro.
Para realizar isso é bem simples. Segue comigo...
(1) Clicar sobre o componente, clicar com o botão direito do mouse e selecionar a opção Rename, caso seu SSIS esteja em inglês.
Você também consegue realizar essa mesma operação clicando sobre o componente, apertando o botão F2 e digitando o nome do seu fluxo.
Bem simples, viu!
Pronto! Agora podemos dizer que nosso fluxo está completo! De ponta a ponta.
(1) Fluxo de cópia de dados de um arquivo CSV para o Microsoft SQL Server.
Depois de tudo pronto, vamos para execução! Será que vai funcionar? Vamos ver...
4.6- Debugando os Dados
Mais antes de partir para execução, vou falar de um recurso bem interessante que existe no SSIS que é o Data Viewer. Ele permite que você visualize os dados durante a sua execução.
Você pode configura-lo de duas formas.
Primeiro:
(1) Clicar com o botão do mouse sobre a seta;
(2) Clicar em Enable Data Viewer.
Esse modelo não dá opção de selecionar as colunas. Para pode selecionar, após os dois passo acima, você precisa seguir os passos abaixo para escolher as colunas que deseja visualizar.
E de outra forma:
(0) Indicativo de que estamos na tela do Data Viewer;
(1) Clicar duas vezes sobre a seta azul;
(2) Clicar para habilitar os passos (3) e (4);
(3) Opção de movimentar as colunas de um lado para o outro, você também pode fazer isso clicando duas vezes sobre as colunas ou arrastando;
(4) Todas as colunas que estiverem nessa posição serão apresentadas durante a visualização.
(5) Clicar em OK para seguir.
Após essa breve explicação, vamos a execução propriamente dita.
(1) Fluxo em execução;
(2) Linhas filtradas;
(3) Apresentação das informações no Data Viewer.
Com isso finalizamos nosso processo de carga de dados via SSIS.
(1) Origem do arquivo CSV;
(2) Filtro de município;
(3) Carga de dados no Microsoft SQL Server.
Vamos visualizar agora pelo Client do Microsoft SQL Server.
5 - Analisando os Dados Carregados no Microsoft SQL Server
(1) Consulta na tabela dbo.consulta_vagas;
(2) Dados carregados.
6 - Configurando o Componente Execute SQL Task
Acabou que na empolgação esqueci de um ponto importante.
Vocês repararam que não existe em nosso fluxo um ponto de validação de existência de registros em nossa tabela. Mediante isso, inclui um passo anterior ao de carga que é para limpar a tabela (TRUNCATE TABLE) sempre antes de carregar.
Dessa forma garantimos que não vamos ter dados repetidos em nossa tabela.
Acompanha aqui rapidinho...
(1) Inclusão de um componente de script SQL, Execute SQL Task. Após incluir basta clicar duas vezes;
(2) Após clicar duas vezes uma janela será aberta. Vamos clicar nessa linha para incluir o script;
(3) Escrita do comando SQL;
(4) Clicar em OK para confirmar o comando;
(5) Informar um nome para nosso componente.
E ai meu me amigo, me conta, gostou? Preparado para embarcar na nova aventura?
7 - Conclusão
Meu amigo é como muita gratidão que conseguimos finalizar o primeiro post que abre a série Não Mexe Nos Meus Componentes do SSIS.
Veremos nos demais posts que serão publicados até o dia 30/12/2021 sempre as terças, quintas e sábados muitos componentes do SSIS, conseguiremos entender a aplicação de cada um deles e no final apresentarei um projeto completo onde em um único pacote estarei usando todos.
Mais uma vez agradeço a sua atenção, sua dedicação e queria contar com você até o final da nossa jornada!
Grande abraço e fique com Deus!
Até o próximo...
Comments