top of page
Foto do escritorGabriel Quintella

SQL Server Integration Services, Trabalhando com componente Row Count

Olá meu amigo, voltei com mais um conteúdo super interessante para você.


No post de hoje vamos falar um pouco sobre o componente Row Count.


Podemos definir esse componente da seguinte forma: O Row Count conta as linhas que passam por um fluxo de dados e armazena essa contagem final em uma variável.


Dentro de um pacote SSIS podemos usar esse componente para contagem de linhas, para atualizar as variáveis usadas em scripts e em expressões.


Por exemplo, é possível fazer a utilização dessa informação armazenada em uma variável para montar uma mensagem em e-mail, incluindo o total de linhas carregadas. Podemos usar em uma rotina de auditoria de carga.


Um ponto bastante interessando é que esse valor é armazenado apenas após a última linha ter passado pelo passo que antecede o Row Count.


Com isso o seu valor não é atualizado a tempo de usar o valor atualizado no fluxo de dados que contém a transformação Row Count. Você pode usar a variável atualizada em um fluxo de dados separado.


Essa transformação tem uma entrada e uma saída e não dá suporte a uma saída de erro.


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 uma conexão do tipo OLE DB pois iremos consumir e gravar dados do Microsoft SQL Server, ou seja, Source e Destinantion irão apontar para o mesmo local, a única diferença será a tabela que será consumida e que será gravada. 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 consumir uma tabela do Microsoft SQL Server, iremos usar também o componente Row Count pois vamos realizar a contagem dos dados inseridos 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;



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);

(4) 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 a conexão criada está configurada e disponível;

(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 o destino dos dados e um que será usado para contabilizar a quando de linhas que estarão sendo inseridas em nosso destino.


(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 SQL Server;

(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.



Após a inclusão do componente de Source, vamos selecionar de onde (tabela) os dados deverão ser carregados.


(1) Após selecionar o componente Source Assistant, vamos clicar duas vezes sobre o componente OLE DB Source;

(2) Na aba Connection Manager;

(3) Selecionar a conexão que criamos anteriormente;

(4) Nesse passo também é possível realizar a criação de uma nova conexão;

(5) Nesse ponto podemos selecionar se a nossa origem será uma table or view, caso escolha, no passo seguinte você deverá selecionar em uma lista qual a origem e também pode ser selecionado um script, caso seja escolhida essa opção, no passo seguinte você deverá informar o script de consulta;

(6) Selecionar em nosso Source qual a tabela estaremos usando para carga;

(7) Conseguimos visualizar os dados existentes na tabela;

(8) E estando tudo certo, basta clicar em OK para finalizar.



E agora a nossa cereja do bolo. Vamos falar um pouco de como podemos trabalhar com o componente Row Count.


4.2 - Configurando o Componente Row Count


Dentro dos fluxos de dados que desenvolvo, faço a utilização de uma rotina para gravar toda trilha de carga do ETL. Dentro desse fluxo sempre faço a utilização do componente Row Count sempre com o objetivo de identificar a quantidade de linhas que estão sendo carregadas ou atualizadas.


Esse processo parece desnecessário, mais durante um processo de homologação torna-se bastante útil. Acompanha comigo como que realizamos a utilização desse componente. Siga os passos abaixo...


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

(2) Feito isso o nosso componente será adicionado em nosso fluxo.



Com o componente adicionado em nosso fluxo vamos começar a configuração.


(1) Vamos dar dois cliques sobre o componente Row Count;

(2) Selecionar uma variável para receber o valor.


Pammmmmmmm! Primeiro obstáculo. Não possuímos nenhuma variável criada para receber essa informação! O que fazer agora?


Sem desespero! Tudo sob controle! Avance uma tela...



Na tela abaixo vou orientar você a definir a sua variável! É mais simples do que você pensa que é...


Existem diversas formas de chegar no fluxo onde realizamos a definição de nossa variável.


Primeira Forma


(1) Na barra inferior vamos clicar em Variables;

(2) Uma aba será apresentada conforme na imagem abaixo, vamos clicar sobre o ícone para Add Variable;

(3) Na coluna Name vamos definir um nome para a variável, na coluna Scope identifica onde ela será aplicada, na coluna Data Type qual será o tipo de dado dela e por último na coluna Value qual será o valor inicial dela.


Pronto, variável criada com sucesso!



Uma outra forma seria...


(1) No menu superior clicar na opção SSIS;

(2) Clicar em Variables;


Seguir os passos relatados anteriormente...


(3) Uma aba será apresentada conforme na imagem abaixo, vamos clicar sobre o ícone para Add Variable;

(4) Na coluna Name vamos definir um nome para a variável, na coluna Scope identifica onde ela será aplicada, na coluna Data Type qual será o tipo de dado dela e por último na coluna Value qual será o valor inicial dela.



E por último...


(1) Na área de trabalho do nosso Data Flow, clicar com o botão do mouse;

(2) Clicar em Variables;


Seguir os passos relatados anteriormente...


(3) Uma aba será apresentada conforme na imagem abaixo, vamos clicar sobre o ícone para Add Variable;

(4) Na coluna Name vamos definir um nome para a variável, na coluna Scope identifica onde ela será aplicada, na coluna Data Type qual será o tipo de dado dela e por último na coluna Value qual será o valor inicial dela.



Viu como que foi fácil?


Após a criação da variável, vamos retornar em nosso componente Row Count e continuar com a configuração...


(1) Duplo clique sobre o componente;

(2) Selecionar a variável que será utilizada no processo carga;

(3) Estando tudo certo, basta clicar em OK para concluir a configuração.



4.2 - Configurando o Componente Destination Assistant


(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.



Vamos selecionar onde os dados deverão ser carregados.


(1) Após clicar duas vezes sobre o componente OLE DB Source, vamos iniciar a configuração pela aba Connection Manager;;

(2) Selecionar a conexão que criamos anteriormente;

(3) Existe a possibilidade de criar uma nova conexão caso seja necessário;

(4) Nesse passo vamos selecionar como que será o processo de carga, em batch ou lotes (Table or view - fast load) ou linha a linha (Table or view);

(5) Selecionar qual tabela será usada;

(6) Nesse ponto também é possível realizar a criação da tabela caso não exista;

(7) É possível visualizar uma prévia dos dados existentes em nosso destino;

(8) E clicar em OK para finalizar.



Após selecionar o destino, o próximo passo é realizar o mapeamento entre as colunas da origem e do destino.


(1) Na aba Mappings;

(2) O primeiro mapeamento (automático), o SSIS realiza por igualdade de nomes, ou seja, caso todas as colunas possuam o mesmo nome, 100% das colunas possuem o mapeamento realizado, caso contrário cabe a você realizar o mapeamento das que ele não conseguiu fazer;

(3) É possível visualizar como que ficar o mapeamento;

(4) Estando tudo certo, basta clicar em OK para finalizar.



Último passo para finalizar a primeira parte do nosso post é incluir um componente que será usado para limpar o nosso destino antes da carga.


4.3 - 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.



Tudo concluído, o próximo passo é realizar a execução do nosso processo! Observe a imagem abaixo.



Muito bem! Tudo funcionou como o esperado, mais ainda faltou um detalhe e tenho certeza que você está pensando o mesmo. Adicionei um componente e não consegui visualizar a sua utilidade.


Pois bem meu amigo, concordo em gênero, número e grau com você. Faltou um ponto muito importante.


Segue aqui comigo que vou tentar esclarecer!


5 - Adicionando um breakpoint


Antes de reexecutar todo o processo para demonstrar como visualizamos a utilização desse componente, vamos primeiro adicionar um passo em nosso processo de carga chamado de Breakpoint.


Nome bonito Quintellão, mais até agora falou e não disse nada! Explique melhor, estou esperando...


Tá certo meu amigo. Breakpoint é um mecanismo que adicionamos em nosso código, seja ele dentro do desenvolvimento de um sistema, uma query e pasmem, até mesmo dentro do seu ETL é possível incluir esse trem! Ele serve para definir que quando o processo chegar ali ele tem que parar e seguir somente quando você determinar.


Veja como que é simples...


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

(2) Clicar em Edit Breakpoint;



Após seguir os passo acima, a tela abaixo será apresentada, vamos selecionar as duas primeiras opções.


Break when the container receives the OnPreExecute event;

Break when the container receives the OnPostExecute event;


Isso significa que quando chegar no passo ele vai parar e ficará aguardando para processar e ele também irá parar quando concluir o processamento.


Para saber maiores detalhes sobre as demais opções do Breakpoint, deixo abaixo um link para a documentação oficial da Microsoft.




Agora sim meu velho, segue comigo!


Breakpoint definido, vamos executar o ETL! Acompanha ai....


(1) Quando você define um Breakpoint e o momento da execução chega em seu componente, uma seta amarela fica sobre o seu componente;


Observe agora como que podemos acompanhar o debug de nosso fluxo. Analise os itens (2), (3) e (4) da tela abaixo. Da mesma forma como ocorre acima, existe outras formas formas de visualizar essa informação.


Primeira Forma


(2) Na barra inferior clicar em Locals;

(3) Procurar listagem que será apresentada a variável criada, em nosso caso ContagemLinhas;

(4) Observe que o valor apresentado ainda é o inicial (zero), imagem abaixo;




Segunda Forma


(1) Clicar na aba Debug;

(2) Clicar em Windows;

(3) Na barra inferior clicar em Locals.



Terceira forma


Ou simplesmente apertando em seu teclado Ctrl+Alt+V e depois L.


Para que o processo avance, vamos pressionar F5 no teclado ou clicar sobre o botão que possui uma seta amarela.



Após avançar com o fluxo, é possível visualizar na tela abaixo que o valor para a variável foi capturado e corresponde com o valor de registros carregados.


Acompanha na tela abaixo.


(1) Fluxo de carga de dados;

(2) Na barra inferior clicar em Locals;

(3) Procurar listagem que será apresentada a variável criada, em nosso caso ContagemLinhas;

(4) Valor capturado.



Agora sim...consegui convencer dessa vez?


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



Script de Create Table dbo.consulta_vagas_amostra


06_SCRIPT_CREATE_TABLE_consulta_vagas_amostra.sql


Pacote SSIS - Row Count


07_Importa_Cargos_Row_Count.dtsx


6 - Conclusão


Isso ai meu amigo, mais um passo concluído com sucesso!


Esse foi um post simples, porém rico em detalhes. Hoje apresentei um componente que nos ajuda a ter um controle dos dados que estamos carregando, sejam novos dados ou dados já existentes.


Conforme expliquei acima, utilizo ele bastante em meu processo de auditoria de carga, fluxo esse que está em nosso radar de aprendizado!


Vamos avançar agora falando de uma dupla da pesada, Row Sampling e Percentage Sampling. Os dois auxiliam na definição de uma massa de dados de pré-avaliação, porém ao utilizar o primeiro você define a quantidade de registros já o segundo um percentual. Aguarde ai no cantinho do pensamento, pois é bem bacana!


Um excelente dia para ti, nos vemos no próximo post! Fique com Deus!

9 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page