Ocasionalmente precisamos alterar o volume de linhas lido de um banco por um Table Input, numa tranformação, para testar o processo inteiro. Se você tem apenas uma transformação, isso é fácil – basta abrir a transformação com o Spoon, alterar e testar.

E quando você acabou de montar o ETL inteiro, criou o job e ele vai levar algumas horas para rodar completamente? Cada teste de ponta-a-ponta pode levar algumas horas, e nós nunca queremos esperar horas para descobrir um erro numa RegEx no meio da última transformação. Não, especialmente quando não dá para rodar uma só de cada vez, mas precisamos rodar todas na sequência. E foi isso que me aconteceu: eu precisava testar a carga de certas variáveis e ver se todas as transformações de um ETL estavam tratando as variáveis corretas.

Eu poderia deixar o processo rodar e, a cada erro (que poderia ou não existir) eu corrigiria e reiniciaria tudo. Bummer! Horas para descobrir se havia erro, e mais horas para ter certeza que o consertara! Não, precisava haver uma forma melhor.

Como os arquivos eram todos texto (eu sempre salvo meus ETL em arquivo, raramente uso o repositório do PDI), eu tinha outra saída: um comando de linha que alterasse cada arquivo, mudando o limite de leitura de cada Table Input de 0 (infinitas linhas) para, por exemplo, 1000. Pedi ajuda a um grande e famoso (Wikipedia!!) amigo, Júlio Neves, que me deu o seguinte comando:

sed -i ‘s-<limit>0</limit>-<limit>1000</limit>-‘ *.ktr

Ele usa o Sed para alterar o parâmetro diretamente nos arquivos das transformações. Assim, com um comando de uma única e miseravelmente curta linha eu alterei o projeto todo!

Depois de finalizado o teste, o comando “reverso” leva o projeto de volta a seu estado original:

sed -i ‘s-<limit>1000</limit>-<limit>0</limit>-‘ *.ktr

Ou eu poderia simplesmente jogar as novas transformações fora e puxar do repositório de novo.

Observação: o Sed é um programa que faz parte da maioria (se não de todas) as distribuições Linux/Unix. Mas você pode tê-lo no Windows também. Basta instalar o Cygwin. É um pouco chato, para quem nunca mexeu com Linux, mas o poder que ela traz é proporcional. Vale a pena!

2 comentários sobre “Hackeando Transformações

  1. Fábio, você poderia fazer um post sobre sua experiência no pentaho referente a performance? Desenvolvo um projeto onde eu prefiro realizar todas as transformações via query e percebi que você utiliza os componentes do pentaho para fazer o mesmo. Como tenho poucos dados de testes quando vou testar a performance de ambos acaba dando quase o mesmo resultado em questão de tempo.
    Se puder descrever sua experiência ficaria grata.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s