Olá pessoal, como estão?

Em alguns posts atrás, mostrei como podemos extrair dados do banco relacional para alimentar o data warehouse utilizando consultas SQL. Hoje quero mostrar para vocês como criar uma task que utilizando comandos em SQL possa tratar os dados dentro da tabela.

Neste tipo de task por exemplo, podemos criar um fluxo que vai atualizando colunas, linhas, deletando ou movendo dados que não são condizentes e por fim, até limpando toda a tabela.

O interessante aqui é que embora se integre aos fluxos dentro do data flow, ela ocorre fora sendo criada no processo de control flow consumindo os dados oriundos da transformação realizada no data flow.

Dito isso, vamos a criação da task e elaboração do processo.

No exemplo abaixo, vou utilizar a tabela de produtos criando uma task seguindo um fluxo de dados onde irá atualizar certas colunas de acordo com uma determinada condição.

Primeiro, irei deixar a query de consulta.

Com a query criada e executada, vamos para o próximo passo: criar um data flow para armazenar este resultado em outra tabela.

Abaixo, a configuração de acesso ao banco de dados via comando SQL.

Vamos converter para Nvarchar utilizando a conhecida task de conversão para não termos problema com a tabela de destino.

Para este exemplo, não me preocupei em criar uma tabela nos padrões. Para tal, apenas clique em New e deixe a sua tabela de acordo com a imagem.

NOTA: nomeie a sua conexão OLE DB para que quando o SSIS for criar uma tabela, ele crie com o nome da task.

Este deverá ser o fluxo de dados ao final desta primeira etapa.

Utilizando SQL Task

Agora com nossos dados carregados, vamos atualizar a tabela com as tasks de SQL substituindo os nulls por N/A (NOT AVAILABLE).

O primeiro passo é criar a conexão da task SQL com o banco. Assim, designaremos onde aquele comando irá atuar. No nosso caso, no banco que criamos como exemplo.

Alguns pontos a se explicar na tela inicial da SQL Task.

  • Em preto, temos o campo de nome e descrição que atribuímos para esta task.
  • Em vermelho, o tipo de conexão que vamos estabelecer (OLE DB) e o banco que vamos nos conectar.
  • Sublinhado em azul, é o campo onde passamos a query que queremos que a task execute
  • Em verde é uma opção que permite ou não realizar um parse antes da execução, como fizemos em outros exemplos envolvendo SQL. Se quiser executar um parse antes, marque esta opção como falsa.

NOTA: o result set irei explicar em outro momento pois envolve assuntos que ainda não vimos. Então, por hora, deixe none.

Quando passar a query pro “SQL Statement” não esqueça do commit, caso faça o update com “begin tran”  pode causar lock na tabela.

Depois de criar o essa task, execute um truncate na sua tabela, caso possua registros  e mande executar o fluxo no control flow!!!!

O fluxo final ficou desta maneira, adicionei mais um tarefa de comando SQL para excluir a tabela que criei para exemplo.  Drop table (nome da tabela)

Exclusão concluída com sucesso.

Assim, aprendemos como criar e executar uma tarefa baseada em um comando SQL fora do data flow mas que se “comunica” com as ações que ocorrem lá.

Dominar essa task é de grande valia e permite diversas manipulações que podem substituir ou complementar tarefas dentro do seu processo de ETL.

Neste último exemplo, criei todas as tabelas apenas com comandos SQL automatizados pelo SSIS. Como podemos ver, é uma excelente task para se utilizar.

OLÁ!

Se chegou até aqui e gostou do pequeno tutorial, deixe seu like compartilhe. Ajude o blog a alcançar mais pessoas!

Caso queira receber em primeira mão esse tipo de conteúdo, se inscreva abaixo:

SIGA NAS REDES SOCIAIS!

Espero que tenham gostado, saúde!