top of page
Foto do escritorGabriel Quintella

SQL Server Integration Services, Trabalhando com componente Percentage Sampling

Atualizado: 22 de dez. de 2021

Salve, salve comunidade! Vamos abordar hoje mais um componente fantástico do nosso amado SSIS.


No post passado, abordamos o componente Row Sampling. Um componente que tem como finalidade possibilitar a carga de uma amostra de dados de um dataset, bastando apenas definir a quantidade no momento da sua configuração.


Esses dois componentes trabalham da mesma forma, a grande diferença está em como definimos a massa de dados que precisamos trabalhar, ou melhor, quantos dados vamos recuperar.


Quando trabalhamos com o componente Percentage Sampling estamos falando em percentual sobre o dataset, ou seja, queremos por exemplo analisar 10% dos dados disponíveis enquanto o Row Sampling trabalha com quantidade, ou seja, precisamos de 10 registros! Basicamente esse é a diferente entre eles.


Vamos ver na prática como que é o seu funcionamento! Acompanha ai comigo...


Antes de avançar para o código, vamos 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 iremos gravar em dois destinos diferentes. 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 Percentage Sampling pois vamos realizar a análise em uma pequena amostra de dados 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.


Bora começar então!


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;



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



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, dois para o destino dos dados e um que irá permitir que façamos a análise da nossa amostra de dados, ou seja, ele é o objetivo desse post.


(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 banco de dados, vamos selecionar SQL Server;

(4) Selecionar a conexão que criamos;

(5) Observe que algumas informações referente a origem dos dados é 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) 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 tabela ou 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 a origem, ou tabela ou script, depende do passo anterior;

(7) É possível visualizar uma prévia dos dados;

(8) E clicar em OK para finalizar.



Próximo passo é realizar a inclusão do componente de Percentage Sampling.


4.2 - Configurando o Componente Percentage Sampling


Esse componente possui um comportamento bem interessante pois ele traz um entendimento que na prática não é assim que funciona. Vamos seguindo que mais a frente explico com maiores detalhes.


(1) Na aba SSIS Toolbox vamos selecionar o componente Percentage Sampling;

(2) Realizar um duplo clique no componente e informar o percentual dos dados que queremos analisar;

(3) De modo semelhante com alguns componentes, vamos informar um nome para o fluxo dos dados que serão analisados;

(4) Informar um nome para o fluxo dos dados que não serão analisados;

(5) Clicar em OK para prosseguir.



Agora sim vamos fazer a inclusão do nosso Destination.


4.3 - 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 banco de dados, 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.



(1) Duplo clique no componente OLE DB Destination. na aba Connection Manager;

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

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

(4) Selecionar o modo de carga de dados;

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

(6) É possível criar uma tabela caso não exista;

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

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



Como teremos dois Destinations, essa configuração será feita duas vezes.


(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 banco de dados, 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.



(1) Duplo clique no componente OLE DB Destination. na aba Connection Manager;

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

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

(4) Selecionar o modo de carga de dados;

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

(6) É possível criar uma tabela caso não exista;

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

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



Depois que configuramos os destinos, vamos realizar o link entre o componente Percentual Sampling com os destinos.


(1) Clicar sobre o componente e arrastar a seta até o primeiro destino, ele representa as linhas que queremos analisar;

(2) Selecionar o fluxo correto.



E por último vamos realizar o vinculo com as linhas que não queremos analisar.


(1) Clicar sobre o componente e arrastar a seta até o primeiro destino, ele representa as linhas que não queremos analisar;

(2) Selecionar o fluxo correto.



Agora chegou ao ponto que comentei acima.


Dá uma pausa e volta lá em cima. Olha que comportamento estranho! Definimos que queríamos analisar 10% dos dados, e onde que 10% de 252 é 24?


Pois bem meu amigo, é isso mesmo, esse componente ele traz um valor aproximado ao que você definiu, podendo ser pra mais ou pra menos.


Olha a imagem abaixo que representa


(1) Fluxo executado;

(2) Total de registros no source;

(3) Total de registros aproximado do valor definido no componente;

(4) Total de registros restantes.



Para finalizar nossa configuração, vamos incluir um componente que será usado por limpar sempre o nosso destino 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.



Hora de ver se essa joça funciona!


(1) Fluxo dos dados;

(2) Registros inseridos;

(3) Vamos conectar em nosso servidor;

(4) Selecionar nosso banco de dados;

(5) Comando de consulta dos dados;

(5) Resultado.



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



Vamos utilizar as mesmas tabelas do post anterior. Script de Create Table dbo.consulta_vagas_nao_carregadas


07_SCRIPT_CREATE_TABLE_consulta_vagas_nao_carregadas.sql


Pacote SSIS - Row Sampling


09_Importa_Cargos_Percentage_Sampling.dtsx


5 - Conclusão


Ufa! Mais um pra conta.


E ai meu amigo o que achou? Um pouco louco, certo? Tive a mesma impressão quando comecei a trabalhar com SSIS. Ficava muito confuso quando definia um percentual e no final o componente entregava outro. Muito doido! Achava ou melhor tinha certeza que estava fazendo algo de errado, mais somente depois de estudar a documentação que foi perceber que esse é o seu comportamento.


Por isso que sempre falo, é IMPORTANTE buscar na documentação oficial o primeiro contato, sei que somos bastante ansiosos, e essa ansiedade atrapalha mesmo, é um comportamento normal do ser humano, e o pensamento é sempre o mesmo, porque devemos perder nosso tempo com documentação, quero logo ir pro código!


Nesses dois últimos posts, estudamos dois componente que foram definidos com o objetivo de permitir que façamos um teste sobre nosso pacote de ETL e também permite que você faça uma análise prévia sobre seus dados, são muito úteis, recomento que explorem bastante quando estiverem validando o modelo de vocês.


No próximo post vamos abordar o componente Copy Column. Esse componente vai permitir que você duplique uma coluna da sua origem com a utilização de um componente que foi desenvolvido pra isso, existe outro componente que também permite fazer isso, iremos abordar também e explicar as diferenças entre eles.


Espero que tenham gostado e nos encontramos no próximo. Um excelente dia e fique com Deus.

11 visualizações0 comentário

Posts recentes

Ver tudo

Comments


bottom of page