Olá pessoal, continuando nossa série de posts sobre ETL, hoje quero mostrar como podemos buscar dados das fontes por consulta em SQL.

O processo não difere muito do que já fizemos porém é um pouco mais curto.

Neste processo, devemos ter mais cuidado com a extração, já que os dados da fonte ou dependendo até mesmo de uma função que utilizamos na consulta, podem acabar sendo alterados.

Por exemplo: Se em uma tabela qualquer temos uma coluna do tipo date e executamos uma função de extração que retorna INT por exemplo, na hora do ETL pode acabar retornando erro. Então, sempre que for extrair dados utilizando uma query, tenha em mente que deverá usar a task de conversão.

Dito isso, vamos a prática.

Dica: Sempre que for extrair dados de uma tabela por query, crie esta no banco de dados, veja sua sintaxe, colunas, se há erros e se foi escrita corretamente.

Para este exemplo, vamos criar uma nova tabela contendo apenas a categoria e a subcategoria dos produtos.

Como podem ver, query simples criada no banco de dados.

No SSIS crie um novo package clicando com o botão direito na aba SSIS Package no canto direito na janela de Solution Explorer. Quando criar o novo package, clique duas vezes e abra um novo data flow.

Iremos utilizar estas três tasks para o processo de ETL.

Agora, vamos criar nossa conexão na task OLE DB Source para executarmos a consulta neste banco.

Se clicar em Parse Query, o SSIS irá verificar se há algum erro de sintaxe, mas não verificará se a coluna existe. É apenas para estrutura da query.

Configure seu Data access mode para SQL command, como na imagem e na aba columns, selecione todas as colunas retornadas na consulta.

Ao final deste processo crie a conexão com task de conversão e com a tarefa OLE DB Destination.

Crie a conexão e clique em new para criarmos uma tabela e após faça o mapping utilizando as colunas “Copy” que foram convertidas para o padrão do SSIS.

Clique em OK e feche esta task e execute para carregar a tabela que acabamos de criar.

A task foi concluída com sucesso e agora, vamos ver o resultado inserido no banco!

Como podemos ver, criamos mais uma task carregando uma tabela nova do nosso banco de exemplo e desta vez, utilizando consulta SQL.

Confesso que tenho utilizado mais as taks em meus estudos para me familiarizar ainda mais com a ferramenta, mas faço uso de queries em alguns casos!

EXTRA: 

Como eu havia esquecido de comentar em posts anteriores, e até mesmo neste, irei falar agora sobre as caixas de diálogo que temos quando utilizamos a opção de ‘fast load’:

  • Keep Identity – funciona como o identity do banco transacional, criando uma sequência numérica para a coluna marcada com identity. Irei mostrar no próximo post seu uso.
  • Keep Nulls – trata nulls nas colunas. Eu geralmente deixo porque gosto de ver onde estãos os nulls para substituir de acordo.
  • Table Lock – trava a tabela enquanto os inserts estão sendo feitos
  • Check Constraints – verifica se há alguma restrição na tabela que a carga irá ocorrer.

Se quiser limitar a quantidade de linhas que esta carga irá inserir na tabela, basta especificar na opção “Rows per batch”. Muito útil em grandes ambientes com grande volume de dados.

Deste modo, encerro este breve post mostrando como podemos utilizar uma consulta para criar um fluxo de ETL. 

Também vimos que é possível manter o identity nas colunas inserindo valores automaticamente e que podemos até mesmo, limitar a quantidade de linhas processadas por lote!

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:

Espero que tenham gostado, saúde!