Tutorial Kettle

O Kettle é uma ferramenta para integração de dados, responsável pelo processo de Extração, Transformação e Carga (ETL). Ferramentas ETL são utilizadas mais frequentemente em projetos de data warehouse, mas também podem ser utilizadas para outros propósitos, tais como migração de dados entre aplicações, exportação de banco para arquivos, limpeza de dados e na integração de aplicações.

[ Hits: 69.456 ]

Por: Giovanni Won Dias B. Victorette em 08/01/2010


Introdução



O Kettle é uma ferramenta para integração de dados, faz parte da solução Pentaho1, onde é responsável pelo processo de Extração, Transformação e Carga (ETL). Ferramentas ETL são utilizadas mais frequentemente em projetos de data warehouse, mas também podem ser utilizadas para outros propósitos, tais como migração de dados entre aplicações ou base de dados, exportação de dados de banco para arquivos, limpeza de dados e na integração de aplicações.

O primeiro passo para iniciar o uso da ferramenta Kettle é ter um conhecimento sobre o que é data warehouse ou DW, para simplificar. Estas informações estão distribuídas na internet ou em livros e são de suma importância para entender os conceitos básicos tais como Modelo Estrela, Dimensões, Fatos, ETL.

Este tutorial tem por objetivo auxiliar no uso inicial da ferramenta, ele contempla algumas das funções mais utilizadas no processo de ETL, além de algumas dicas para evitar "dores de cabeça" no uso da mesma. O conteúdo encontra-se distribuído de forma bem didática, direta e objetiva, sendo assim poupou-se muitos formalismos, ficando este para uma proposta futura de se publicar um manual ou artigo.

[1] http://www.pentaho.com

Conceitos

Transformação

Uma transformação é uma rotina com uma coleção de passos interligados, dos quais o primeiro representa a fonte ou os dados e o último representa a saída dos dados.
Linux: Tutorial Kettle
Em uma única transformação podem ser colocadas várias fontes de dados e várias saídas de dados, no caso de data warehouse o recomendado é utilizar uma transformação para cada dimensão ou tabela de fatos, no final isto ajuda na organização e na criação dos Jobs.

Jobs

Um Job é uma rotina de execução, onde pode executar uma ou mais transformações ou Jobs, além de diversas outras ações. Neste tutorial iremos retratar apenas Jobs para executar as transformações em conjunto, separadas em cargas de dimensões estáticas, dimensões de modificação lenta e carga dos fatos.

Step (Passo)

Um passo é uma unidade mínima dentro de uma Transformação. Uma grande variedade de passos encontra-se disponível e agrupada em categorias tais como Input e Output, entre outros. Fundamentalmente existem três tipos básicos de passos, que são os de entrada, transformação e saída.

Cada passo é modelado para atender uma função específica, tais como ler um parâmetro ou normalizar um grupo de dados. Os passos são facilmente criados utilizando o recurso de drag and drop (arrastar e largar).

Uma vez criado, para abrir, basta um duplo clique no ícone. Uma janela aparece, permitindo parametrizar o comportamento do mesmo. Muitos passos possuem múltiplas propriedades de acordo com a categoria que se encontra.

Recomenda-se fortemente que o passo seja renomeado, assim a função fica mais fácil de ser identificada no diagrama.

Hop

Um "hop" é uma representação gráfica do fluxo de dados entre dois passos (conexão), sendo um deles a origem e o outro o destino. Os dados que passam por um Hop constituem os dados de saída do passo de origem. Uma conexão pode ser criada clicando no passo de origem, pressionando o botão shift, e arrastar o mouse (mantendo o botão pressionado) até o passo destino.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Download e instalação
   3. Montando uma transformação
   4. Utilizando variáveis e tratando strings
   5. Utilizando Java Script e Database Lookup
   6. Extração a partir de XML e XLS, montando um Job e utilizando serviços de FTP/e-mail
Outros artigos deste autor

Usando o Guitar Pro no Linux

Montando um roteador com o floppyFW

Leitura recomendada

Exportando e importando confs do Putty em Windows

PhpPgAdmin e PhpMyAdmin

Sphinx Search: Free open-source SQL full-text search engine (Parte 1 - Instalação)

Elasticsearch na saúde

Automatizando a criação de uma base de conhecimento em Prolog para gerenciar os acessos a um site

  
Comentários
[1] Comentário enviado por f_Candido em 08/01/2010 - 22:10h

Olá,

Gostaria de parabenizá-lo pelo artigo. Parece ser uma ferramenta interessante, dado que para BI, conheço somente ferramentas pagas, não caras, mas pagas. Mas, como comentário, ficou faltando somente esclarecer um pouco mais, dado que é uma ferramenta de ETL, sobre as suas bases : Granularidade, Dimensões, Fatos... Bom, mas ficou muito bom.

Parabéns

Abraços

[2] Comentário enviado por gigiow em 09/01/2010 - 09:48h

Obrigado pelo comentário,
Sobre data warehouse apenas comentei no texto, se tiver que escrever algo vai render outro artigo, mas já existe muito material publicado sobre o tema na internet. O foco aqui é mesmo a ferramenta e os primeiros passos com a mesma.

Abraços

[3] Comentário enviado por AdemarGomes em 21/01/2010 - 18:46h

Olá Giovanni,

Parabéns pelo trabalho apesar de não ter lido todo o artigo vejo que vc se esforçou para fazer um bom e apresentável artigo.
Segue meu site, www.ademargomes.com, onde você pode encontrar bastante material sobre Kettle e outras coisas.
Me senti a vontade de colocar aqui meu site pois escrevi um artigo de Kettle muito próximo do seu, mas esse foi pro site no ano passado, por tanto não tem plagio :)

Sorte e Sucesso,

AdeamrGomes

P.S. Link do artigo: http://www.ademargomes.com/index.php/artigos/56-turialkettle.html

[4] Comentário enviado por henriquemeira em 26/02/2010 - 00:35h

Estou tentando criar alguns "mapas" com o Kettle e me deparei com uma barreira: como utilizar os dados de um Input "pai" para retornar valores de um Input "filho" ?

Explico: digamos que tenho que montar um arquivo de Pedidos no seguinte formato:

CAPA: NRO_PEDIDO | DATA_PEDIDO | VALOR
ITENS:NRO_PEDIDO | NRO_PRODUTO|QTD|PRECO

Exemplo:

101|2010-02-26|100,00
101|123|1,00|40,00
101|321|2,00|30,00
102|2010-02-26|20,00
102|456|2,00|10,00


Penso que para construir algo parecido eu utilizaria um Input com uma query buscando as capas de pedidos, e o fluxo (ou hop) seguiria para outro Input, desta vez buscando os itens. Este é o ponto: como fazer o segundo Input receber um valor do primeiro input?

Em resumo:

Input_nro_1: select nro_pedido, data_pedido, valor from PEDIDO;

Input_nro_2: select nro_produto, qtd, preco from ITEM_PEDIDO where nro_pedido = Input_nro_1.Nro_pedido

Deu pra entender?

valeu!

[5] Comentário enviado por gigiow em 26/02/2010 - 08:10h

Henrique,

Vamos ver se entendi, existem formas de se fazer o que precisa:

1) As tabelas estão na mesma base? se estão pode montar a consulta em um único "input"
ficaria:
SELECT c.nro_pedido, c.data_pedido, c.valor
FROM CAPA c
INNER JOIN ITENS i
ON c.nro_pedido = i.nro_pedido

2) Se estão em bases distintas, utiliza-se o passo de JOIN que existe no kettle para realizar esta junção entre os dois inputs;

Valeu!


[6] Comentário enviado por henriquemeira em 19/03/2010 - 00:37h

Opa, não tinha visto que tinha retornado ao meu comentário...

Bem, vamos lá... vc quase entendeu.

É o caso 1, estão na mesma base. Mas eu gostaria de tratar em inputs distintos, ou seja, capa em um input e item em outro input. Entretanto, o input2, ou seja, dos itens, iria ser aberto para cada capa.

Pq isto? Pq eu quero gravar a capa do pedido no destino e depois o item, mas eu preciso garantir a integridade dos dados, ou seja, eu tenho que gravar a capa antes de gravar o item, e para isto acredito que tenho que abrir o Input do item apenas após realizar o output da capa.

Um diagrama de exemplo seria assim:


|CAPA|--->---|OUTPUT|--->---|ITEM|--->---|OUTPUT|


Deu para entender?

Ou o correto neste caso seria um Transformation para Capa e outro Transformation para Item?

valeu!!

[7] Comentário enviado por ttonyys em 24/05/2011 - 22:29h

Giovanni, parabéns pela iniciativa. Estou dando meus primeiros passos rumo a BI. Participei de um treinamento em Brasília/DF com Caio Moreno (o professor coruja - http://blog.professorcoruja.com) e estou finalizando "Inteligência Competitiva" pela FGV.

Passou por um problemão por mais de 30 dias: conectar ao DB Progress via JDBC. Consegui, Ufa! Criei http://inpentaho.blogspot.com para deixar a solução registrada.

Não pare de postar sobre o KETTLE.

Jesus bless.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts