Our Blog

Como agendar um job do Pentaho no Windows

Depois de instalar a aplicação, uma das primeiras coisas que você precisa saber, é como fazer o agendamento das ETLs que criar. Afinal, de que vale uma ferramenta de automação que não pode ser automatizada, não e mesmo?

O que faremos aqui é basicamente criar uma ETL (main.kjb), colocar um arquivo batch na mesma pasta (main.bat) e depois fazer seu agendamento.

Por que nomear tudo como main? Bom, na verdade pode ser qualquer nome. Apenas estou mantendo uma convenção adotada por linguagens como C e Java. Essa convenção será útil no futuro, quando suas ETLs ficarem mais complexas e forem criados muitos arquivos. Dessa forma, quando abrir uma pasta de processo, você vai saber imediatamente qual é o job que coordena tudo.

 

1. Crie uma ETL

O propósito aqui é apenas mostrar como realizar o agendamento, portanto este job não executará nenhuma tarefa.

Abra o PDI, caso não tenha instalado  CLIQUE AQUI

No menu superior, vá em: File > New > Job

Vá para a caixa de ferramentas (canto esquerdo), aba Design e começe a digitar “s t a r t” para iniciar a procura. Arraste os steps START e DUMMY para a área de trabalho. Para fazer a ligação (o termo correto é HOP), clique na origem, pressione Shift (mantendo o mouse pressionado) e arraste o cursor até o destino. (Fique tranquilo, ninguém acerta isso de primeira)

Salve o job com o nome main.kjb

Execute o job pela interface gráfica. Basta clicar no botão  >  logo abaixo da letra “m” de main e depois dar ENTER na próxima janela. Na verdade nada vai acontecer, o propósito é você se familiarizar com a interface gráfica e verificar o log que será apresentado no rodapé.

O formato .kjb não é executável. Ele precisa ser chamado pelo arquivo batch que será criado adiante. Pode fechar a interface gráfica, ela é necessária apenas para criar o job.

 

2. Crie o arquivo main.bat

Este é o arquivo que junta todas as peças e faz com que a sua ETL seja acionada via linha de comando (por consequência permite que seja agendada)

O nivel de detalhamento do que será logado é configurável e vai desde Error até Rowlevel, que é o mais verboso (recomendo que não o utilize, porque é MUITO detalhado). Geralmente os níveis Minimal ou Basic são suficientes.

Insira o conteúdo abaixo, adequando as linhas destacadas:

@echo off

TITLE MeuProcessoAutomatico
SET currentdir=%~dp0
SET kitchen=D:\Portables\Pdi53\Kitchen.bat
SET logfile="%currentdir%log.txt"

echo. >> %logfile%
echo. >> %logfile%
# level: Error Minimal Basic Detailed Debug Rowlevel
"%kitchen%" /file:"%currentdir%main.kjb" /level:Basic >> %logfile%

Salve o arquivo e o execute.

Após alguns segundos, o arquivo log.txt terá sido criado na mesma pasta. Seu conteúdo será semelhante a este, que é parecido com o que você teve ter visto no console da interface gráfica ao executar sua ETL pela primeira vez:

DEBUG: Using JAVA_HOME
DEBUG: _PENTAHO_JAVA_HOME=D:\Portables\Java8_64
DEBUG: _PENTAHO_JAVA=D:\Portables\Java8_64\bin\java.exe

D:\Portables\Pdi53>"D:\Portables\Java8_64\bin\java.exe"  "-Xmx768m" "-XX:MaxPermSize=384m" "-Djava.library.path=libswt\win64" "-DKETTLE_HOME=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" "-DKETTLE_JNDI_ROOT=" -jar launcher\pentaho-application-launcher-5.3.0.0-213.jar -lib ..\libswt\win64  -main org.pentaho.di.kitchen.Kitchen /file:"C:\agendamento\main.kjb" /level:Basic 
2017/12/12 18:37:21 - Kitchen - Logging is at level : Basic logging
2017/12/12 18:37:21 - Kitchen - Start of run.
2017/12/12 18:37:23 - main - Start of job execution
2017/12/12 18:37:24 - Kitchen - Finished!
2017/12/12 18:37:24 - Kitchen - Start=2017/12/12 18:37:21.304, Stop=2017/12/12 18:37:24.011
2017/12/12 18:37:24 - Kitchen - Processing ended after 2 seconds.

 

Enquanto o processo está em execução, tudo que você vê é uma tela preta. O relatório de execução é direcionado apenas para o arquivo log.txt.

Existe uma maneira de fazer com que o log também seja apresentado no console.

Aqui vai a dica: utilize o aplicativo tee para windows. (quem usa Linux, deve conhecer)

Faça o download nesse endereço: http://gnuwin32.sourceforge.net/downlinks/coreutils-bin-zip.php

Será necessário baixar também o arquivo com as dlls necessárias: http://gnuwin32.sourceforge.net/downlinks/coreutils-dep-zip.php

Copie tee.exe, libintl3.dll e libiconv2.dll para a mesma pasta da sua ETL.

Edite o arquivo main.bat. Altere sua última linha para:

"%kitchen%" /file:"%currentdir%main.kjb" /level:Basic | tee.exe -a %logfile%

 

3. Faça o agendamento:

Digite “Taskschd.msc” na linha de comando.

Vá em “Criar Tarefa”

Em Disparadores: configure os horários de execução

Em Ações: insira o caminho completo para o arquivo main.bat

Agora é só programar sua ETL para fazer algo útil como atualizar um banco de dados, gerar planilhas, consolidar informações, enviar alarmes, etc. Falaremos mais sobre isso nas próximas postagens.

9 Comentário

  1. Roner
  2. Sidnei A Pistore
    • Marcelo Gennari
      • Sidnei A Pistore
      • Sidnei A Pistore
          • Sidnei A Pistore

Deixe seu comentário