Tudo bem meu amigo? Nosso barco está navegando de vento e poupa, cruzando mares agitados! Mais a todo vapor!!
Hoje trago um assunto novo, você conhece ou já ouviu falar do componente Row Sampling?
Como que você faria se tivesse que selecionar de um dataset uma massa de dados para análise? Não sabe?
Pois vem esse cara veio para salvar sua vida!
O componente Row Sampling é muito útil durante o desenvolvimento de pacotes ETL pois ele permite que você trabalhe com um conjunto pequeno de dados, uma amostra! Isso permite que durante a a execução do seu ETL seja mais rápida, e isso ocorre porque uma amostra aleatória é usada em vez de usar todo o seu dataset. Com uma breve amostra de dados de exemplo o teste é sempre completo porém reduzido devido a massa usada, o que também facilita a identificação de problemas de desempenho no ETL.
Existe um outro componente, Percentage Sampling, falaremos sobre ele no próximo post, ele tem a mesma aplicação porém selecionando uma porcentagem de linhas do dataset.
De praxe e sem delongas, antes de iniciar os trabalhos, 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 Row 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, uma para o destino dos dados e um que permite que façamos uma análise em uma amostra dos dados antes de concluir o processo de carga, 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 arquivo, 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) 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.
4.2 - Configurando o Componente Row Sampling
Vamos falar um pouco sobre o nosso personagem principal, o componente Row Sampling.
Esse componente é usado para obter um subconjunto selecionado aleatoriamente de um dataset. Com ele você pode especificar o tamanho exato da amostra de saída e especificar um fluxo de saída desses dados. Vamos acompanhar como que realizamos a sua configuração.
Nesse momento vamos incluir o componente Row Sampling para carregar a nossa amostra de dados. É bem simples, segue comigo!
(1) Na aba SSIS Toolbox, vamos clicar sobre Row Sampling;
(2) Ele será carregado em nosso fluxo;
(3) Fluxo de Dados.
Na tela a seguir vamos trabalhar na sua configuração.
(1) Duplo clique no componente Row Sampling;
(2) Aba Sampling;
(3) Definir a quantidade de linhas;
(4) Definir o nome do fluxo referente a quantidade de linhas que serão analisadas;
(5) Definir o nome do fluxo referente a quantidade restantes;
(6) Clicar em OK para confirmar.
A aba Columns permite que você selecione quais colunas deseja analisar.
(1) Aba Columns;
(2) Colunas que existem no source;
(3) Colunas selecionadas no output;
(4) Clicar em OK para finalizar.
Viu como que não tem mistérios? Por último vamos fazer a inclusão do nosso Destination.
4.3 - Configurando o Componente Destination Assistant
Nesse nosso exemplo, vamos trabalhar com dois componente para o Destination, pois iremos carregar os dados referente a nossa amostra e os que não pretendemos analisar.
Essa saída referente aos dados que não queremos analisar é opcional, a sua definição pode ser omitida dentro do seu fluxo.
Vamos configurar agora a saída (Destino) da amostra que pretendemos analisar. Esse dados serão gravados na tabela dbo.consulta_vagas_amostra.
(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;
(2) Na aba Connection Manager;
(3) Selecionar a conexão com o banco de dados;
(4) Nesse passo é possível realizar a criação de uma nova conexão;
(5) Selecionar o modo de carga de dados;
(6) Selecionar em qual tabela os dados serão gravados;
(7) É possível criar uma tabela caso não exista;
(8) Podemos visualizar se existe algum registros em nosso destino;
(9) Clicar em OK para finalizar a configuração.
Agora sim vamos fazer a configuração da saída dos dados que serão descartados.
O processo é o mesmo, a única diferença é a tabela de saída.
(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;
(2) Na aba Connection Manager;
(3) Selecionar a conexão com o banco de dados;
(4) Nesse passo é possível realizar a criação de uma nova conexão;
(5) Selecionar o modo de carga de dados;
(6) Selecionar em qual tabela os dados serão gravados;
(7) É possível criar uma tabela caso não exista;
(8) Podemos visualizar se existe algum registros em nosso destino;
(9) Clicar em OK para finalizar a configuração.
Agora vamos relacionar o componente Row Sampling com o Destination.
(1) Clicar sobre o componente Row Sampling;
(2) Ligar os componentes através da seta em azul;
(3) Selecionar o fluxo para o que definimos como o que queremos analisar;
(4) Clicar em OK para confirmar.
4.4 - Configurando o Componente Execute SQL Task
Para finalizar nossa configuração, vamos incluir um componente que será usado por limpar sempre o nosso destino antes da carga.
(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.
Fluxo executado com sucesso.
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:
Script de Create Table dbo.consulta_vagas_nao_carregadas
07_SCRIPT_CREATE_TABLE_consulta_vagas_nao_carregadas.sql
Pacote SSIS - Row Sampling
08_Importa_Cargos_Row_Sampling.dtsx
5 - Conclusão
Sensacional meu amigo! Conseguimos concluir mais um assunto! Nossos estudos estão fluindo de vento e poupa.
Hoje comentamos sobre o componente Row Sampling. Um componente super útil quando pretendemos fazer uma análise sobre uma amostra de dados e pasmem, tem empresa que chega até a utilizar esse componente para realizar sorteios pois essa seleção ocorre de forma aleatória, muito maneiro isso, concorda?
No próximo post vamos falar de um outro componente que trabalha de modo bastante semelhante, posso até afirmar que a única diferença entre eles está na forma como os dados são selecionados.
Nesse que analisamos hoje, definimos um quantidade exata de dados já no outro selecionamos um percentual sobre a sua massa total de dados. Aguarde e verás!
Um excelente dia e nos vemos em breve! Fique com Deus!
Comments