Sei sulla pagina 1di 17

Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Tutorial Kettle - Pentaho Data Integration


Sáb, 19 de Dezembro de 2009 18:12

Esse tutorial foi escrito originalmente em inglês por María Carina Roldán da
Argentina e está disponível no site http://kettle.pentaho.org/ sob a licença de
"Atribuição-Uso ão-Comercial-Compartilhamento pela mesma Licença 3.0".

A versão em português foi traduzida e atualizada por Ademar Gomes e está


disponível aqui sobe essa mesma licença que pode ser encontrada aqui.

Introdução
Pentaho Data Integration (PDI, também chamado Kettle) é um componente da suíte do Pentaho responsável
pelos processos de Extração, Transformação e Carga (ETL). Apesar de ferramentas de ETL serem usadas em
projetos de data warehouse, PDI pode também ser usado para:

* Migração de dados entre aplicações/banco de dados


* Exportar dados de banco de dados para arquivos texto
* Carregar massivamente dados em banco de dados
* Data Cleansing – disciplina de qualidade/limpeza de dados de data warehouse
* Integração de aplicações.

PDI é fácil de usar. Todos os processos são criados com uma ferramenta gráfica onde você especifica o que
fazer sem escrever nenhuma linha de código. Por conta disso você pode dizer que PDI é orientado a
metadado.

O PDI pode ser usado como uma aplicação independente ou como parte da suíte do Pentaho. Como uma
ferramenta de ETL, é a mais popular ferramenta open source disponível. PDI suporta um vasto conjunto de
formatos de entrada e saída de dados, incluindo arquivos texto, arquivos .xls (Excel) além de banco de dados
comerciais e open source. Além disso, a capacidade de transformação de dados do PDI permite que você
manipule dados com pouquíssimas limitações.

1 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Através de um simples exemplo “Hello World”, esse tutorial mostrará como é fácil trabalhar com o PDI e
mostrará também o básico, preparando você para outras transformações mais complexas.

Instalando o Kettle
Você pode baixar o PDI aqui http://sourceforge.net/projects/pentaho/files/Data Integration/3.2.0-stable/.
Enquanto esse tutorial é traduzido e atualizado o Kettle está na sua versão 3.2.0, então o arquivo que deve ser
baixado é o pdi-ce-3.2.0-stable.zip para Windows e pdi-ce-3.2.0-stable.tar.gz para outras plataformas.

Pré-requisitos

O Kettle requer o runtime do Java para rodar (JRE), versão 1.5 ou mais nova. O JRE pode ser baixado
gratuitamente no site http://java.sun.com/.

Instalação

O PDI não requer instalação. Apenas descompacte o arquivo .zip dentro de uma pasta qualquer. Para
sistemas operacionais baseados no Unix é necessário fazer com que o script se torne executável usando o
seguindo comando:

cd Kettle

chmod +x *.sh

2 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Introdução ao Spoon
O Spoon é a ferramenta gráfica com que se desenha e testa todo processo do PDI. Os outros componentes
executam os processos desenhados com o Spoon. No Spoon você constrói Jobs e Transformations. O PDI
oferece dois métodos de salvar seus arquivos:

1. Repositório em banco de dados


2. Arquivos

Se o modo de repositório for escolhido, o mesmo deve ser criado na primeira vez que o Spoon é executado.
Se o método de arquivo for escolhido, os Jobs são salvos em arquivos de extensão .kjb e tranformations são
salvos em arquivos de extensão .ktr. Nesse tutorial é usado o modo de arquivo.

Iniciando o Spoon

O arquivo spoon.bat no Windows ou spoon.sh nos sistemas operacionais baseados no Unix, inicia o spoon.
Será exibida a janela de boas vindas. Vá ao menu Edit e clique em Options. Na janela de opções é possível
várias configurações gerais, inclusive características visuais. Caso algo for modificado é necessário iniciar o
Spoon novamente para que as mudanças tenham efeito.

Exemplo Hello World

Apesar de se tratar de um exemplo simples, irá introduzir alguns fundamentos do PDI:

Trabalhando com o Spoon


Transformações
O que são Steps e Hops
Variáveis predefinidas
Visualizando e executando a partir de Spoon
Executando transformações a partir da linha de comando com o Pan

Visão Geral

Vamos supor que você tenha um arquivo .csv contendo uma lista de nomes e é necessário criar um arquivo
.xml contendo cumprimentos para cada um dos nomes. Se o conteúdo do arquivo .csv é :

last_name, name

Suarez,Maria

Guimaraes,Joao

Rush,Jennifer

Ortiz,Camila

Rodriguez,Carmen

da Silva,Zoe

Essa deveria ser a saída num arquivo .xml:


- <Rows>

- <row>
<msg>Hello, Maria!</msg>

3 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

</row>

- <row>
<msg>Hello, Joao!</msg>
</row>
- <row>
<msg>Hello, Jennifer!</msg>
</row>
- <row>
<msg>Hello, Camila!</msg>
</row>
- <row>
<msg>Hello, Carmen!</msg>
</row>
- <row>
<msg>Hello, Zoe!</msg>
</row>

</Rows>

A criação desse arquivo .xml será o objetivo dessa primeira transformação.


Uma transformação é formada por Steps conectados por Hops. Esses Steps e Hops formam um caminho por
onde o dado trafega. Por isso que é dito que uma transformação é data-flow oriented, ou seja, orientada a
fluxo de dados.

Preparando Ambiente

Antes de começar a construir a transformação, crie uma pasta para os arquivos desse tutorial. Nessa pasta
serão salvos todos os arquivos desse tutorial. Então crie um arquivo .csv como mostrado acima e salve o
arquivo como list.csv.

Etapas da criação da transformação

A transformação proposta será completada em três atividades:


1. Criar a transformação
2. Construir o esqueleto da transformação usando Steps e Hops.
3. Configurar os Steps especificando seu comportamento.

Criar a transformação

1. Clicar em New, selecionar Transformation. Também acessível através do menu File. E ainda através do
Ctrl-N
2. Selecionar o menu Transformation e clicar em Configuration.
3. Na janela seguinte, é possível definir várias configurações da transformação. Nesse caso, apenas dê um
nome e uma descrição para a transformação.
4. Salve a transformação na pasta criada para o tutorial com o nome de hello. Isso criará um arquivo
hello.ktr.

Construir o esqueleto da transformação usando Steps e Hops

Um Step, ou passo em português, é menor unidade dentro de uma transformação. Uma larga variedade de
steps está disponível no Kettle. Esses steps estão agrupados em categorias como Input e Output além de
várias outras. Cada Step foi desenhado para completar uma função específica como ler um parâmetro ou
normalizar um conjunto de dados.
Um Hop é uma representação gráfica do dado transitando entre dois steps, com uma origem e um destino. O
dado que transita através do Hop consiste nos dados de saída do Step, opção identificada no Kettle como
Output Data. Esse mesmo dado é considerado o dado de entrada do Step destino, Input Data. Um Hop tem
apenas uma origem e apenas um destino, no entanto mais de um Hop pode ter como origem o mesmo Step.
Quando isso acontece, o dado de saída pode ser copiado ou distribuído para vários destinos. Também mais de

4 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

um Hop pode ter como destino o mesmo Step. Nesse caso, o Step destino deve ter a habilidade de fazer um
merge entre os dados de entrada de diferentes steps.

Essa transformação deve:

1. Ler o arquivo .csv


2. Construir os cumprimentos
3. Salvar os cumprimentos no arquivo .xml

Para cada um desses itens, será usado um Step diferente, como mostrado abaixo:

Nesse exemplo, a relação entre tarefas a ser executadas e steps é de um para um, mas nem sempre ocorre
assim.

Como iniciar a criação da transformação:

1. A esquerda da janela do Spoon fica a paleta de steps, Steps Palette. Selecione categoria Input.
2. Arraste o CSV file input e solte na área de trabalho a direita.
3. Selecione a categoria Scripting.
4. Arraste Modified JavaScript Value para a área de trabalho.
5. Selecione a categoria Output.
6. Arraste o Step XML Output para a área de trabalho.

Agora é necessário fazer a ligação entre o Step CSV file input com o Step Modified JavaScript Value. Para
isso crie um Hop:
1. Selecione o primeiro Step
2. Segure a tecla Shift e arraste o ícone para o segundo Step.
3. Pelo mesmo processo, faça a ligação entre Modified Java Script Value e o XML Output

5 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Especificando o comportamento do Step

Todo Step tem uma janela de configuração. Essa janela varia de acordo com a funcionalidade do Step e a
categoria a qual pertence. Por outro lado, o nome do Step é sempre exibido para todos os casos e deve ser
preenchido cuidadosamente, pois é o nome pelo qual o Step será reconhecido ao longo de todo o ETL.

Configurando o Step CSV file input

1. Clique duas vezes no Step CSV file input.


2. Nessa janela você deve indicar a localização, formato e conteúdo do arquivo.
3. Substitua o nome padrão por um mais representativo da função desse Step. Nesse caso name list.
4. No campo Filename, escreva o nome e a localização do arquivo.
5. Clique em Get Fields para adicionar a lista com os nomes das colunas do arquivo de entrada. Por padrão
o Kettle assume que o arquivo tem cabeçalho (checkbox Header row present está selecionado)
6. Agora a grid contém os nomes das colunas do arquivo. Last_name e name. A janela deveria estar mais ou
menos assim:

6 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

7. Desmarque a opção lazy conversion caso esteja marcada.


8. Clique em Preview para assegurar que o arquivo está sendo lido como esperado. Uma janela irá aparecer
com um conjunto de dados para visualização.
9. Clique em OK para finalizar as alterações do Step.

Configurando o Step Modified JavaScript Value

1. Clique duas vezes no Step Modified JavaScript Value.


2. Essa janela é diferente da do Step anterior. Nessa o PDI permite que seja escrito código JavaScript. Esse
Step será usado para escrever a mensagem de cumprimento “Hello,” concatenado com cada um dos nomes
do arquivo.
3. Dê o nome de Greeting para esse Step.
4. Ao lado esquerdo da janela fica o conjunto de funções que podem ser utilizadas no código além dos
campos de entrada e saída. Nesse exemplo existem dois campos: _name e name. Escreva o seguinte código:

var msg = 'Hello, ' + name + "!";

5. No painel inferior é possível direcionar qualquer variável criada ou manipulada no código como campo
de saída. Nesse caso foi criada a variável msg, e para que a mesma seja incluída como dado de saída, é
preciso adicioná-la no grid:

7 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

6. Clique em Ok para finalizar a configuração do Step.


7. Para visualizar os dados de saída e qual novo campo foi criado, selecione o Step que foi configurado,
clique com o botão direito e vá até a opção Input Fields. Essa opção mostrará os campos que entram no Step,
campos que vêem de Step anterior. Clicando em Output Fields mostra os campos de saída, inclusive os
criados nesse Step. Nessa ultima opção, além dos campos last_name e name, você verá também o novo
campo msg.

Configurando o Step XML Output

1. Clique duas vezes no Step XML Output. Nessa janela deve ser configurado a localização e o nome do
arquivo de saída e quais dos campos serão incluídos no arquivo.
2. Dê o nome de File with Greetings para o Step.
3. No campo File, digite:
Hello
4. Clique em Get Fields na aba Fields para preencher o grid com o nome dos campos vindos do Step
anterior. Nesse caso deixe apenas a msg. Apague os campos name e last_name.
5. Salve a transformação.

8 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Como isso funciona?

Quando uma transformação é executada, quase todos os Steps são executados simultaneamente e
assincronamente. As linhas de dados fluem através dos Steps “cada uma por si“. Cada registro processado
deixa o Step de origem para o destino sem esperar pelos demais registros. Essa é uma característica
importante para se manter em mente.
O exemplo está quase completo. A transformação lê o arquivo de entrada, cria mensagens para cada registro
através do código javascript e envia as mensagens para o arquivo de saída. Esse é um pequeno exemplo com
poucos registros, por conta disso é difícil notar a característica assíncrona em ação no Kettle. Tenha em
mente que ao mesmo tempo em que um registro está sendo gravado no arquivo de saída, outro pode estar
saindo do primeiro Step da transformação.

Verificando, pré-visualizando e executando.


1. Antes de executar a Transformação, cheque se tudo está configurado propriamente clicando em Verify.
O Spoon vai verificar se a transformação é sintaticamente correta e vai procurar por Steps sem Hops e
conexões não existentes. Se tudo estiver em ordem a transformação esta pronta para testar a saída de dados.
2. Selecione o Step contendo o código JavaScript e clique no botão preview. A janela abaixo será exibida:

9 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

3. Clique em QuickLaunch. Uma janela com uma amostragem dos dados de saída desse Step. Se a saída
está como esperada a transformação é pronta para ser executada.
4. Clique em Run.
5. O Spoon exibirá uma janela onde podem ser configurados parâmetros e o nível de log gerado pela
transformação, além de outras informações. Clique em Launch.
6. Uma nova janela será exibida. A aba de log contém registros da execução corrente.

A tabela de log contém informações importantes:

Read: Número de vindo do Step anterior.


Written: Numero de linhas saindo para o próximo Step
Input: O número de registros lidos de um arquivo ou tabela de banco de dados.
Output: Número de linhas escritas num arquivo ou tabela de banco de dados.
Errors: Erros da execução. Se existe erros, a linha será exibida em vermelho.

Na aba de log escrito, as linhas informativas de output são mostradas. A última linha, caso a transformação
ocorra bem, será:

Spoon - The transformation has finished!!

Não havendo nenhum erro, abra o arquivo gerado Hello.xml e verifique o conteúdo.

Pan

O Pan permite que transformações sejam executadas através de janelas de terminais. O arquivo de script é o
pan.bat no Windows ou pan.sh em outras plataformas. Esses arquivos ficam localizados na pasta de
instalação. Se o arquivo de script for rodado sem nenhum parâmetro, o mesmo retornará uma lista de
possíveis parâmetros e opções.

Para executar a transformação criada anteriormente, execute esse comando:


Pan /file <Jobs_path>/Hello.ktr /norep

/file – deve preceder o nome do arquivo .ktr


/norep – comando que diz ao Kettle para não conectar em repositório.
<Jobs_path>/Hello.ktr – caminho completo de onde se encontra o arquivo. Por exemplo:

C:/Pentaho/Tutorial

ou
/home/PentahoUser/Tutorial

Se o comando foi executado corretamente a transformação rodará da mesma forma em que rodou no Spoon.
Nesse caso o log será exibido no terminal a menos que especificado um arquivo para ser escrito com o log. O
formato será ligeiramente diferente mas a informação é a mesma que foi exibida no ambiente gráfico.

Refinando o primeiro exemplo


Agora que a transformação foi criada e executada, o próximo passo será melhorar a transformação.

10 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Visão Geral

As evoluções que serão adicionadas a transformação são:

a) A transformação será armazenada numa nova pasta e o nome do arquivo será informado através de
parâmetro.
b) A existência do arquivo de entrada será validada.
c) O nome do arquivo de saída dependerá do nome do arquivo de entrada.

Para esses melhoramentos será necessário:

Receber parâmetro
Criar o arquivo de saída com os cumprimentos
Checar se o parâmetro não é nulo e abortar a transformação caso seja.
Checar se o arquivo existe e abortar a transformação caso não exista.

Essas tarefas serão completadas através de Job. Os Jobs são criados da mesma forma que transformações,
com componentes conectados através de Hops. Por isso se diz que Jobs são orientados a controle de fluxo. As
possibilidades de execução de um Job vão de verificar a existência de um arquivo ou tabela até envio de
emails. É possível, dentro dos Jobs, executar transformações ou outro Job. Como numa transformação, cada
componente pode ter vários Hops para vários destinos.

O processo será:

Recuperar o parâmetro necessário será resolvido com uma nova transformação.


O parâmetro será validado através do resultado da nova transformação.
A existência do arquivo será validada através de um componente do Job.
A maior tarefa do Job será executada pela transformação criada anteriormente na primeira parte do
tutorial.

Graficamente o Job é representado assim:

11 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Preparando o ambiente

Nessa parte do tutorial, os arquivos de entrada e saída estarão numa nova pasta chamada Arquivos. Crie essa
pasta e copie o arquivo list.csv para o novo arquivo.
Para evitar que seja necessário escrever o caminho completo toda vez que se referencia a uma pasta ou
arquivo, é aconselhável criar uma variável contendo essa informação. Para isso edite o arquivo de
configuração kettle.properties localizado em C:\Documents and Settings\<usuário>\.kettle no Windows
XP/2000, C:\Profiles\<usuário>\.kettle no Windows Vista ou *~/.kettle em outras plataformas. Coloque a
linha abaixo no final do arquivo, mudando o caminho para a pasta criada para conter os arquivos.

FILES=/home/PentahoUser/Files

O Spoon lê este arquivo quando é iniciado, portanto para que a alteração tenha efeito é preciso reiniciar o
spoon.

As atividades são:
1. Criar a nova transformação
2. Modificar a transformação criada anteriormente.
3. Criar o Job.

Criando a nova transformação

1. Crie uma nova transformação da mesma forma que foi feito na primeira parte do tutorial. De o nome de
get_file_name.
2. Arraste os Steps abaixo para a área de trabalho, dê nomes a eles, e crie os Hops para conectá-los de
acordo com a imagem:

Get System Info (categoria Input)


Filter Rows (categoria Flow)
Abort (categoria Flow)
Set Variable (categoria Job)

3. Configure os steps como segue abaixo:

12 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Configurando o Step Get System Info


Esse Step captura informações das fontes fora da transformação, como por exemplo a data do sistema ou
parâmetros digitados em linha de comando. Nesse caso será utilizado para pegar o parâmetro necessário para
completar as tarefas dessa parte do tutorial. Na janela de configuração desse Step existe um grid onde cada
linha digitada se torna uma nova coluna contendo informações do sistema.
1. Clique duas vezes no Step.
2. Na primeira célula, abaixo a coluna Name, digite my_file.
3. Quando clicar abaixo da coluna Type, uma janela será exibida com as opções disponíveis. Selecione
command line argument 1.
4. Clique em OK

Configurando o Step Filter Rows


O Step Filter Rows divide sua saída em duas, escolhendo qual saída será utilizada baseado em condições. As
linhas que atendem a condição seguem um caminho no Job. As demais seguem outro caminho.
1. Clique duas vezes no step
2. Escreva a condição: Em Field selecione my_file e substitua o sinal “=” por IS NULL.
3. Na lista perto da opção Send 'true' data to Step, selecione Abort.
4. Na lista perto de Send 'false' data to Step, selecione Set Variable.
5. Clique OK.
Agora, um parâmetro nulo (NULL) será encaminhado para o Step Abort e um parâmetro não nulo (NOT
NULL) será encaminhado para o Set Variable.

Configurando o Step Abort


Não existe nada para configurar nesse Step. Se alguma linha chegar a esse Step, a transformação é encerrada
imediatamente, e um retorno de falha é enviado para o Job onde será utilizado.

Configurando o Step Set Variable


Esse Step permite que se crie variáveis e que se coloque os valores dos campos de saída nelas. A janela de
configuração será exibida. Cada linha do grid pode conter uma variável.
1. Clique duas vezes no step
2. Coloque em Get Fields. O único campo que será mostrado: my_file. O valor padrão da variável é o nome
do campo em maiúsculas. O nome ficará MY_FILE. Deixe o nome assim.
3. Clique OK.

Execução

1. Para testar a transformação, clique em Run.


2. A janela de parâmetros será exibida. Você deve usar esse grid para entrar com o parâmetro que poderia
ser escrito na linha de comando. Na primeira linha da coluna Value digite list.
3. Clique Launch
4. No log você verá uma mensagem como essa:

Set Variables.0 - Set variable MY_FILE to value [list]

5. Clique em Run novamente mas não digite nenhum parâmetro. Dessa vez você verá a mensagem:

Abort.0 - Row nr 1 causing abort : []

Abort.0 - Aborting after having seen 1 rows.

Perto do topo da janela será possível ver a mensagem de erro do Step abortado que indica que um erro
ocorreu e que a transformação falhou, como esperado.

Modificando a Transformação

13 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

Agora é hora de modificar a Transformação Hello para que comparar nomes de arquivos com seus
respectivos parâmetros. Se um parâmetro fosse foo, a transformação leria o arquivo foo.csv e criaria um
arquivo foo_with_greetings.xml. Isso ajudaria também a descartar as linhas em branco dentro do arquivo.
1. Abra a transformação Hello.ktr.
2. Abra a janela de configuração do Step CSV File Input.
3. Apague o conteúdo da caixa de texto Filename e pressione Ctrl-Spacebar para ver a lista das variáveis
existentes. Você deveria ver a variável FILES que foi adicionada no arquivo kettle.properties. Selecione isso
e adicione o nome da variável que foi criada na transformação que acabou de ser criada. Digite na caixa de
texto:

${FILES}/${MY_FILE}.csv

4. Clique em OK.
5. Abra a janela de configuração do Step XML Output.
6. Substitua o conteúdo da caixa de texto Filename por:

${FILES}/${MY_FILE}_with_greetings.xml

7. Clique OK.
8. Arraste o Step Filter Rows para área de trabalho e arraste-o novamente para em cima de do Hop que saí
do CSV Input (quando o Hop se tornar mais largo, solte Step). Isso conecta o novo Step na seqüência de
Steps existentes.
9. Selecione name para o campo, e IS NOT NULL como comparador.
10. Deixe a opção Send 'true' data to Step e Send 'false' data to Step em branco. Isso faz com que apenas as
linhas que atende a condição (as que contenham nome) passam para o próximo Step.
11. Clique em OK.
12. Clique em Save As e dê o nome de Hello_with_parameters para a transformação.

Executando a transformação

Para testar as mudanças feitas você dever ter certeza que a variável MY_FILE existe e que a mesma
contenha valor. Como essa transformação é independente da que cria a variável, será necessário criá-la
manualmente.
1. No menu Edit, selecione Set Environment Variables. Uma lista de variáveis aparecerá.
2. No final da lista, digite MY_FILE como nome da variável. Como conteúdo, digite o nome do arquivo
sem extensão.
3. Clique em OK.
4. Clique em Run.
5. Na lista de variáveis você verá a que foi criada. Clique em Launch para executar a transformação.
6. Por ultimo verifique a existência e conteúdo do arquivo de saída.

Criado o Job principal

A última tarefa nessa parte do tutorial é a construção do Job principal:

Criando o Job:
1. Clique em New e depois em Job.
2. A área de trabalho de Job será exibida.
3. Clique em Job e em Configuration.
4. Digite um nome e uma descrição.
5. Clique em Save. Salve o Job na pasta Tutorial com o nome de Hello.

Crie o esqueleto do Job com componentes e Hops:


A esquerda da área de trabalho existe a paleta de componentes Job Entries. Diferente da paleta de
transformação, essa não agrupa os itens em categorias.
1. Arraste um componente Start, dois Transformation e um File Exists na área de trabalho de nomes e

14 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

conecte-os através de Hops.


2. Arraste dois Abort Jobs para a área de trabalho, dê nome e conecte-os. Nesse ponto os Hops ficaram
vermelhos.

Configurando os Steps:
1. Clique duas vezes o componente da primeira transformação.
2. No campo Transformation filename, digite get_file_name.ktr.
3. Por conta das transformações estarem na mesma pasta, você pode usar a variável de caminho do Job:

${Internal.Job.Filename.Directory}/get_file_name.ktr

4. Clique em OK.

Configurando o Segundo componente Transformation.

1. Clique duas vezes no componente.


2. Digite o nome da outras Transformação no campo Transformation Filename e clique em OK:

${Internal.Job.Filename.Directory}/Hello_with_parameter.ktr

Configurando o component File Exists


1. Clique duas vezes no componente.
2. No campo Filename , coloque o caminho completo do arquivo que você quer verificar se existe. O nome
é o mesmo que você escreveu na transformação Hello após a modificação:
${FILES}/${MY_FILE}.csv

Nota: Lembre-se que a variável ${FILES} foi definida no arquivo kettle.properties e a variável
${MY_FILE} foi criada no componente que será executado antes desse.

Configurando o primeiro componente Abort Job Job:


1. Na caixa de texto Message digite: O arquivo não existe

Configurando o segundo componente Abort Job Job:


1. Na caixa de texto Message digite:

O arquivo ${FILES}/${MY_FILE}.csv não existe

Nota: Durante a execução, a ferramenta substitui o nome da variável por seu conteúdo. Por exemplo: "O
arquivo c:/Pentaho/Files/list.csv não existe.

Configurando Hops
Um componente Job Entry pode ser executado sem condição mesmo quando o componente anterior é
executado sem sucesso. Esse tipo de execução é representado por diferente cores nos Hops: Um Hop preto
indica que o próximo componente é sempre executado. Um Hop verde indica que o próximo componente é
executado apenas se o anterior for executado com sucesso. E um Hop vermelho indica que o próximo
componente será executado se o anterior falhar a sua execução.
Como conseqüência da ordem em que os componentes foram criados e ligados uns aos outros, todos os Hops
ficam com a cor preta. O passos serão executados da seguinte forma:

A primeira transformação vai ser executada sempre. (O Hop que vai do Start até esse componente é

15 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

preto)
Se a transformação falhar (Caso não exista um parâmetro) o Hop vermelho encaminha do Job para o
componente Abort Job.
Se a transformação for executada com sucesso, o Job é encaminhado para o Hop verde para a
verificação da existência do arquivo. Se essa falhar, será encaminhada para o componente Abort Job
através do Hop vermelho, se essa verificação for executada com sucesso, o Job será encaminhado
através o Hop verde para a transformação principal.

Como isso funciona

Quando o Job é executado, o Kettle segue a ordem dos componentes conectados através de Hops.A execução
se a seqüência montada. Cada componente é executado por vez fazendo com que os demais componentes do
tipo Job Entry aguardem a execução do componente anterior.
Na vida real, um Job pode resolver problemas relacionados a seqüência de transformações. Se você precisa
que uma transformação aguarde até que outra termine, você deve usar Jobs para isso.

Executando o Job

Para executar um Job primeiro deve ser informado o parâmetro. O único lugar que usa o parâmetro é na
transformação get_file_name, por isso passe os parâmetros da seguinte forma:

1. Clique duas vezes no componente de transformação (get_file_name)


2. Nessa janela aparecerá o grid Fields. Na primeira linha escreva o nome do arquivo criado na pasta
Tutorial sem extensão.
3. Clique em OK.
4. Clique em Run.
5. Uma janela será mostrada com informações gerais relacionadas com a execução do Job.
6. Clique em Execute.
7. O painel de log será mostrado.

O arquivo terá sido criado se ao final do log você ver:

Spoon - Job has ended.

Se o arquivo de entrada foi o list.csv então o arquivo de saída deveria ser list_with_greetings.xml e deveria
estar na mesma pasta. Ache o arquivo e verifique o conteúdo.

Em caso de o parâmetro ser preenchido com o nome de um arquivo inexistente, o Job falhará e você verá:

Abort - The file <parameter> does not exist

E se por acaso o parâmetro for esquecido a mensagem deveria ser:

Abort - The file name is missing

Kitchen
O Kitchen é a ferramenta usada para executar Jobs a partir de janelas de terminais. O arquivo de script é o
kitchen.bat no Windows e kitchen.sh em outras plataformas. Esses arquivos são encontrados na pasta de
instalação. Executando o script sem nenhuma opção, o mesmo exibe uma lista das possíveis opções.
Para executar um Job, use o seguinte comando:

16 de 17 25/05/2010 16:39
Tutorial Kettle - Pentaho Data Integration http://www.ademargomes.com/index.php/artigos/56-turialkettle.html?t...

kitchen /file <Jobs_path>/Hello.kjb <par> /norep

/norep - comando que diz ao Kettle para não conectar em repositório.


/file – deve preceder o nome do arquivo de Job (.kjb).
<Jobs_path> – caminho completo de onde se encontra o arquivo. Por exemplo:

c:/Pentaho/Tutorial (Windows)

ou

/home/PentahoUser/Tutorial

<par> - parâmetro que a transformação esta esperando. Lembre-se que o parâmetro esperado é o nome do
arquivo de entrada sem o .csv no final.

Depois desse comando o Job será executado da mesma forma que seria no Spoon. Nesse caso o log será
escrito no terminal a menos que seja direcionada para um arquivo. Assim como na transformação, o formato
da informação mostrada é diferente mas o conteúdo básico é o mesmo.
Tente executar o Job sem parâmetro ou com um parâmetro invalido para ver se está funcionando de acordo
com o esperado. Também experimente o uso do Kitchen, tente usar diferente níveis de log e outras opções
disponíveis.

Esse tutorial é publicado sob a licença


This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported
License.
Comentários (3)

17 de 17 25/05/2010 16:39

Potrebbero piacerti anche