Olá pessoal, beleza?!?

Voltando aos posts aqui no blog e no Instagram,  quero compartilhar com vocês como está sendo meu processo de criação do portfólio.

Há um tempo atrás eu comecei a com a ideia e aos poucos fui criando as etapas que envolviam suas bases:

  • Documentação (será refeita).
  • Identificação das fontes.
  • Data Profiling.
  • Extração.
  • Stage area.

Agora que já temos essas bases consolidadas, ainda que não tenha postado tudo, podemos dar seguimento ao data warehouse de fato trabalhando o ETL e a criação do modelo dimensional como um todo. 

A princípio, criarei com base na área de vendas, e em breve expandirei para outras áreas.

CRIANDO OS JOBS DE VARIÁVEIS E CONTROLE

Nesta primeira etapa de criação de carga do DW quero deixar as bases do ETL consolidadas para não nos preocuparmos com detalhes na hora das transformações.

As tarefas bases serão:

  • Job de captura com início e fim do ETL.
  • Job criando e atribuindo valor para as variáveis
  • Job que muda o modo de recovery do banco.
  • Job executa um backup do DW ao final do ETL.

Com esse objetivo em mente, o primeiro passo tomado será criar um job que captura e armazena os logs de início e fim do ETL em um arquivo csv. Poderia ser no banco também, mas preferi desse modo.

Abaixo, o esquema inicial do meu ETL:

Entre o job START_ETL_CARGA_DW e EXEC_SET_VAR a execução é obrigatória. Não gostaria de ver o processo travado por que não conseguiu criar o csv. 

Dito isto, vamos configurar o primeiro job. 

Abra uma nova janela de criação de job para criarmos o pipeline que carregará as informações para o csv, e nela, as seguintes transformações.

O próximo passo é utilizar criar uma nova transformação, esta que iremos atribuir para GET_ETL_START_TIME. 

O esquema é: Job -> Job com as transformações -> transformações. 

Essa é a estrutura base; apenas mudei o nome para ETL_INFO_START, do que vimos na imagem acima.

Dentro do step get system info, que foi renomeado para ETL_INFO_START, procure os seguintes itens na coluna type. 

O step select values utilizei apenas para me certificar que os data types estão devidamente configurados, não é necessário, mas segue a configuração:

E para finalizar essa etapa inicial, falta apenas configurar o csv.

No meu modelo, eu coloquei no formato append para criar um modelo único, assim como feito com os Metadados

Para a transformação que captura o log do ETL ao seu final, basta alterar a coluna ETL_START para END, ou o nome que melhor agradar.

ALTERANDO O MODO DE RECOVERY DO DW.

Como sabemos, em grandes ambientes, cargas no DW costumam ser volumosas e bastante exigentes de recursos. 

Há muitos posts atrás, mais precisamente neste aqui, eu conceituei os modos de recuperação do banco de dados, pelo menos, como funciona no SQL Server.

Se formos deixar no modo FULL RECOVERY, o processo pode demorar infinitamente mais do que no modo minimamente logado ou BULK-LOGGED. Com esse cenário em mente, pensei em uma estratégia de garantir que toda vez que meu processo de ETL iniciar, teremos o banco no modo de log mínimo.

Primeiro quero mostrar que antes do ETL ser executado para teste, o banco está no modo FULL. 

Visto isso, vamos partir para a próxima etapa que é criar o comando SQL que altera o status do Recovery model.

Crie uma nova transformação e adicione o step Execute SQL Script. 

Configure uma conexão com um banco qualquer, não precisa ser o banco de destino, o comando funciona em qualquer banco para qualquer banco. 

Ao terminar essa transformação, salvei e puxei que seja executada pela transformação no job ALTERA_RECOVERY_DB.

NOTA: garanta que seu usuário ou o DBA permita que você execute o modo de recuperação do banco, do contrário, o comando pode falhar. 

Para que não haja problema, utilize como condição que todos os steps serão executados independente do resultado, isso pode ser garantido com o sinal do cadeado no Pentaho.

Como penúltimo passo desta etapa inicial, temos de  configurar as variáveis para utilizar ao longo da criação do ETL.

O bom de trabalhar com as variáveis é garantir o dinamismo das transformações, além de facilitar a alteração de  qualquer parâmetro de forma rápida.

Aconselho a colocar nas variáveis, não se limitando:

  • Conexões com bancos.
  • Diretórios.
  • Possíveis datas.
  • Nomes de bancos de dados.

O procedimento é o mesmo que fizemos para os logs do ETL. Crie um job, crie as transformações e a transformação da variável.

Abaixo, minhas variáveis criadas para este ETL em específico.

Uma vez que todo este processo esteja criado, falta apenas o comando de backup do DW ao final do processo.

O procedimento é exatamente o mesmo que utilizamos para alterar o modo de recuperação. Então, deixarei apenas o comando e podem executar em suas transformações sem problemas.

Dependendo da situação, as permissões no banco são necessárias, verifique antes, caso o ambiente seja controlado pelo DBA e etc.

De forma reduzida, a execução dos jobs criados com sucesso e os arquivos que foram gerados pelo ETL.

CONCLUSÃO

Este foi o primeiro que estabeleci para o portfólio na criação do data warehouse.

Busque sempre colocar as variáveis para serem executadas antes do ETL em si, caso contrário, não conseguirá acessar seus valores gravados.

Tenha cuidado com o comando do backup no que tange a permissão. Se não for possível, deixe que o DBA cuide desta tarefa. Outro fator importante é se certificar que seu usuário e o SQL Server podem escrever na pasta direcionada ao arquivo de backup. Pode ocasionar falhas.

Mantenha sempre essa sequência na mente quando for criar uma transformação para não confundir.

Job -> job com as transformações -> transformações. 

Para abrir um job ou uma transformação, selecione o desejado e clique com o botão direito abrindo as propriedades. Na lista de opções clique em “Open referenced object”. 

Espero que tenham gostado, deus os abençoe!

Link para baixar as transformações, aqui.