Construindo uma tabela em um banco de dados a partir de um xml utilzando pentaho – kettle

Bem, o Pentaho é uma ferramenta muito conceituada pelas suas funcionalidades como o BI (Business Intelligence), PDI (Pentaho Data Integration), etc. Hoje vamos utilizar o módulo de PDI chamado Kettle, que permite conversão e transformação de dados para o formato necessário para uso, entre outras coisas.

O objetivo desse post é realizar uma transformação básica em que construiremos uma tabela de banco de dados a partir de um xml devidamente estruturado.

A ferramenta Kettle pode ser baixada do site oficial: http://kettle.pentaho.com/

Importante ressaltar que para utilzar o aplicativo é preciso ter a JRE do java instalada.

Executando o aplicativo vamos criar uma nova transformation (transformação), clique em new->Transformation.

Agora crie o arquivo .xml, vou utilizar no exemplo o seguinte arquivo que salvei com o nome clientes.xml:

- <clientes>

- <cliente>
  <codigo>1</codigo>
  <nome>Victor</nome>
  <endereco>Rua x</endereco>
  </cliente>
- <cliente>
  <codigo>2</codigo>
  <nome>Cedulinho</nome>
  <endereco>Rua Z</endereco>
  </cliente>
- <cliente>
  <codigo>3</codigo>
  <nome>Davizinho</nome>
  <endereco>Rua y</endereco>
  </cliente>
  </clientes>

Agora vamos criar a entrada dos dados no Kettle, para isso vamos utilizar o componente Get Data from XML da aba Input como ilustra a figura abaixo

Imagem

Clique duas vezes sobre o componente para editarmos as propriedades, em seguida clique em browse e selecione o xml que foi criado e em seguida clique em add. Sua tela deve estar similar a da figura abaixo.

Imagem

Selecionado o xml, clique na aba Content e em seguida no botão Get XPath Nodes para selecionarmos as tags de estrutura do xml. Escolha a opção /clientes/cliente que carregará todo o xml.

Agora mude para a aba Fields e clique no botão Get Fields que irá carregar todos os campos do xml como mostra a figura abaixo.

Imagem

Se for de sua vontade, pode conferir se os dados do xml foram carregados clicando em Preview Rows.

Agora utilizaremos o componente da aba Output chamado Table Output e em seguida criaremos um Hop que é a ligação entre dois componentes no Kettle. Para criar um hop clique com o botão do meu do mouse sobre o elemento e arraste ou pressione a tecla shift. Sua transformação deve estar como na figura abaixo.

Imagem

Agora clique duas vezes sobre o elemento Table Output para a configuração. No campo Connection crie a conexão com a base de dados do seu desejo que esteja instalada em seu computador, um exemplo de configuração se encontra na figura abaixo.

Imagem

Feita a conexão com o banco de dados podemos carregar uma tabela clicando no botão do campo Target Table, que abrirá todas as tabelas do database especificado na conexão. Porém nosso objetivo é criar uma tabela a partir do xml, então no campo Target Table escreveremo o nome da tabelas que vamos criar.

Certifique-se que o nome da tabela não existe no database da conexão configurada pois os dados da tabela serão sobrescritos caso a tabela exista. Populei o campo Target Table com o nome pentaho_clientes_teste.

Agora clique na aba Database Fields para selecionarmos os campos da tabela de acordo com o que é enviado do passo Get Data From XML. Selecione a opção Specify Database Fields e em seguida clique em Get Fields.

Se os passos foram realizados corretamente sua tela deve estar como ilustrado na figura abaixo.

Imagem

Podemos checar a sql de criação da tabela clicando no botão SQL.

Ao executarmos a tranformação que criamos a tabela será criada no banco de dados e populada. Se executarmos após a tabela já ter sido criada apenas os dados serão sobrescritos.

Espero ter ajudado mostrando um pouco do funcionamento dessa ferramenta, Valeu galera!

4 thoughts on “Construindo uma tabela em um banco de dados a partir de um xml utilzando pentaho – kettle

  1. Olá Victor. Estou tentando fazer exatamente o que vc explicou no post, mas quando clico em “Preview Row” só carrega a primeira linha do arquivo xml (codigo 1, nome victor e endereco Rua X). Porque não está carregando as outras duas linhas?

    • Olá Fernanda.
      Muito obrigado por comentar!
      Só agora reparei que faltou um nodo no GetXpath nodes do componente do xml.
      Selecione “cliente” como nodo do Xpath nodes e o problema deve se resolver. A url completa do getXpathNodes deve ser
      “/clientes/cliente”.

      Muito obrigado por contribuir, principalmente porque me fez achar um erro no tutorial, o que vai ajudar muitas pessoas que possam a vir usar esse tutorial. Vou corrigir o post.

      Logo pretendo postar mais alguns conteúdos sobre o Kettle.
      Muito obrigado e sempre que precisar é só perguntar que ajudo no que souber!

      Abraço!

      • Obrigada pelo retorno Victor. Podes me passar o seu e-mail (respondendo no meu) para eu tirar uma dúvida de um outro trabalho no Pentaho? Grata!

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>