tutorial kettle - pentaho

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

Upload: bilidj

Post on 24-Jun-2015

1.212 views

Category:

Documents


9 download

TRANSCRIPT

Page 1: Tutorial Kettle - Pentaho

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 daArgentina 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ávelpelos processos de Extração, Transformação e Carga (ETL). Apesar de ferramentas de ETL serem usadas emprojetos 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 quefazer sem escrever nenhuma linha de código. Por conta disso você pode dizer que PDI é orientado ametadado.

O PDI pode ser usado como uma aplicação independente ou como parte da suíte do Pentaho. Como umaferramenta de ETL, é a mais popular ferramenta open source disponível. PDI suporta um vasto conjunto deformatos de entrada e saída de dados, incluindo arquivos texto, arquivos .xls (Excel) além de banco de dadoscomerciais 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.

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

1 de 17 25/05/2010 16:39

Page 2: Tutorial Kettle - Pentaho

Através de um simples exemplo “Hello World”, esse tutorial mostrará como é fácil trabalhar com o PDI emostrará 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 serbaixado é 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 baixadogratuitamente 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. Parasistemas operacionais baseados no Unix é necessário fazer com que o script se torne executável usando oseguindo comando:

cd Kettle

chmod +x *.sh

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

2 de 17 25/05/2010 16:39

Page 3: Tutorial Kettle - Pentaho

Introdução ao Spoon

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

Repositório em banco de dados1.Arquivos2.

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ãosalvos 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ívelvárias configurações gerais, inclusive características visuais. Caso algo for modificado é necessário iniciar oSpoon 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 SpoonTransformaçõesO que são Steps e HopsVariáveis predefinidasVisualizando e executando a partir de SpoonExecutando 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>

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

3 de 17 25/05/2010 16:39

Page 4: Tutorial Kettle - Pentaho

</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 poronde o dado trafega. Por isso que é dito que uma transformação é data-flow oriented, ou seja, orientada afluxo de dados.

Preparando Ambiente

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

Etapas da criação da transformação

A transformação proposta será completada em três atividades:1. Criar a transformação2. 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 doCtrl-N2. 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ê umnome 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 arquivohello.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 desteps está disponível no Kettle. Esses steps estão agrupados em categorias como Input e Output além devárias outras. Cada Step foi desenhado para completar uma função específica como ler um parâmetro ounormalizar um conjunto de dados.Um Hop é uma representação gráfica do dado transitando entre dois steps, com uma origem e um destino. Odado que transita através do Hop consiste nos dados de saída do Step, opção identificada no Kettle comoOutput Data. Esse mesmo dado é considerado o dado de entrada do Step destino, Input Data. Um Hop temapenas 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

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

4 de 17 25/05/2010 16:39

Page 5: Tutorial Kettle - Pentaho

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

Essa transformação deve:

1. Ler o arquivo .csv2. Construir os cumprimentos3. 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 ocorreassim.

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. Paraisso crie um Hop:1. Selecione o primeiro Step2. 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

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

5 de 17 25/05/2010 16:39

Page 6: Tutorial Kettle - Pentaho

Especificando o comportamento do Step

Todo Step tem uma janela de configuração. Essa janela varia de acordo com a funcionalidade do Step e acategoria a qual pertence. Por outro lado, o nome do Step é sempre exibido para todos os casos e deve serpreenchido 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ãoo 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 oumenos assim:

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

6 de 17 25/05/2010 16:39

Page 7: Tutorial Kettle - Pentaho

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á aparecercom 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. EsseStep será usado para escrever a mensagem de cumprimento “Hello,” concatenado com cada um dos nomesdo 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 doscampos 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 campode 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:

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

7 de 17 25/05/2010 16:39

Page 8: Tutorial Kettle - Pentaho

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 oscriados nesse Step. Nessa ultima opção, além dos campos last_name e name, você verá também o novocampo 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 doarquivo 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:Hello4. Clique em Get Fields na aba Fields para preencher o grid com o nome dos campos vindos do Stepanterior. Nesse caso deixe apenas a msg. Apague os campos name e last_name.5. Salve a transformação.

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

8 de 17 25/05/2010 16:39

Page 9: Tutorial Kettle - Pentaho

Como isso funciona?

Quando uma transformação é executada, quase todos os Steps são executados simultaneamente eassincronamente. As linhas de dados fluem através dos Steps “cada uma por si“. Cada registro processadodeixa o Step de origem para o destino sem esperar pelos demais registros. Essa é uma característicaimportante para se manter em mente.O exemplo está quase completo. A transformação lê o arquivo de entrada, cria mensagens para cada registroatravés do código javascript e envia as mensagens para o arquivo de saída. Esse é um pequeno exemplo compoucos registros, por conta disso é difícil notar a característica assíncrona em ação no Kettle. Tenha emmente que ao mesmo tempo em que um registro está sendo gravado no arquivo de saída, outro pode estarsaindo 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 econexõ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:

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

9 de 17 25/05/2010 16:39

Page 10: Tutorial Kettle - Pentaho

3. Clique em QuickLaunch. Uma janela com uma amostragem dos dados de saída desse Step. Se a saídaestá 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 pelatransformaçã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 StepInput: 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çãoocorra 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 é opan.bat no Windows ou pan.sh em outras plataformas. Esses arquivos ficam localizados na pasta deinstalação. Se o arquivo de script for rodado sem nenhum parâmetro, o mesmo retornará uma lista depossí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. Oformato 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.

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

10 de 17 25/05/2010 16:39

Page 11: Tutorial Kettle - Pentaho

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 deparâ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âmetroCriar o arquivo de saída com os cumprimentosChecar 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. Aspossibilidades de execução de um Job vão de verificar a existência de um arquivo ou tabela até envio deemails. É possível, dentro dos Jobs, executar transformações ou outro Job. Como numa transformação, cadacomponente 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 dotutorial.

Graficamente o Job é representado assim:

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

11 de 17 25/05/2010 16:39

Page 12: Tutorial Kettle - Pentaho

Preparando o ambiente

Nessa parte do tutorial, os arquivos de entrada e saída estarão numa nova pasta chamada Arquivos. Crie essapasta 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 ouarquivo, é aconselhável criar uma variável contendo essa informação. Para isso edite o arquivo deconfiguração kettle.properties localizado em C:\Documents and Settings\<usuário>\.kettle no WindowsXP/2000, C:\Profiles\<usuário>\.kettle no Windows Vista ou *~/.kettle em outras plataformas. Coloque alinha 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 ospoon.

As atividades são:1. Criar a nova transformação2. 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 deget_file_name.2. Arraste os Steps abaixo para a área de trabalho, dê nomes a eles, e crie os Hops para conectá-los deacordo 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:

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

12 de 17 25/05/2010 16:39

Page 13: Tutorial Kettle - Pentaho

Configurando o Step Get System InfoEsse Step captura informações das fontes fora da transformação, como por exemplo a data do sistema ouparâmetros digitados em linha de comando. Nesse caso será utilizado para pegar o parâmetro necessário paracompletar as tarefas dessa parte do tutorial. Na janela de configuração desse Step existe um grid onde cadalinha 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. Selecionecommand line argument 1.4. Clique em OK

Configurando o Step Filter RowsO Step Filter Rows divide sua saída em duas, escolhendo qual saída será utilizada baseado em condições. Aslinhas que atendem a condição seguem um caminho no Job. As demais seguem outro caminho.1. Clique duas vezes no step2. 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 (NOTNULL) 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 é encerradaimediatamente, e um retorno de falha é enviado para o Job onde será utilizado.

Configurando o Step Set VariableEsse Step permite que se crie variáveis e que se coloque os valores dos campos de saída nelas. A janela deconfiguração será exibida. Cada linha do grid pode conter uma variável.1. Clique duas vezes no step2. Coloque em Get Fields. O único campo que será mostrado: my_file. O valor padrão da variável é o nomedo 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 poderiaser escrito na linha de comando. Na primeira linha da coluna Value digite list.3. Clique Launch4. 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 erroocorreu e que a transformação falhou, como esperado.

Modificando a Transformação

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

13 de 17 25/05/2010 16:39

Page 14: Tutorial Kettle - Pentaho

Agora é hora de modificar a Transformação Hello para que comparar nomes de arquivos com seusrespectivos parâmetros. Se um parâmetro fosse foo, a transformação leria o arquivo foo.csv e criaria umarquivo 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áveisexistentes. Você deveria ver a variável FILES que foi adicionada no arquivo kettle.properties. Selecione issoe adicione o nome da variável que foi criada na transformação que acabou de ser criada. Digite na caixa detexto:

${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 deSteps 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 aslinhas 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 mesmacontenha valor. Como essa transformação é independente da que cria a variável, será necessário criá-lamanualmente.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 arquivosem 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 detransformaçã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

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

14 de 17 25/05/2010 16:39

Page 15: Tutorial Kettle - Pentaho

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 ficaramvermelhos.

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: "Oarquivo 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 pretoindica 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óximocomponente 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 Hopsficam 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 é

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

15 de 17 25/05/2010 16:39

Page 16: Tutorial Kettle - Pentaho

preto)Se a transformação falhar (Caso não exista um parâmetro) o Hop vermelho encaminha do Job para ocomponente Abort Job.Se a transformação for executada com sucesso, o Job é encaminhado para o Hop verde para averificação da existência do arquivo. Se essa falhar, será encaminhada para o componente Abort Jobatravés do Hop vermelho, se essa verificação for executada com sucesso, o Job será encaminhadoatravé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çãose a seqüência montada. Cada componente é executado por vez fazendo com que os demais componentes dotipo 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ê precisaque 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 é natransformaçã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 pastaTutorial 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 deveriaestar 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 é okitchen.bat no Windows e kitchen.sh em outras plataformas. Esses arquivos são encontrados na pasta deinstalaçã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:

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

16 de 17 25/05/2010 16:39

Page 17: Tutorial Kettle - Pentaho

Comentários (3)

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 doarquivo 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 formatoda 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 acordocom o esperado. Também experimente o uso do Kitchen, tente usar diferente níveis de log e outras opçõesdisponíveis.

Esse tutorial é publicado sob a licença This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported

License.

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

17 de 17 25/05/2010 16:39