domingo, 21 de agosto de 2011

Table Input

Utilizar o componente (step) Table Input é simples, mas podemos destacar algumas funcionalidades que podem ajudar-nos a utilizar este step como solução em diversas etapas de nosso ETL.


Para adicionar o componente ao processo, basta selecionar a opção "DESIGN" na parte superior esquerda da tela, abrir as opções de steps de "INPUT", clicar no componente TABLE INPUT  e arrastá-lo até a área de trabalho do programa.
Para abrir as opções do step, basta clicar duas vezes no componente, ou clicar com o botão direito e na opção "EDITAR STEP".
A figura abaixo mostra as opções do componente:


Vamos aos itens destacados:

1- Connection:   Conexão que será utilizada para a execução da query.   Explicaremos com mais detalhes como configurar uma conexão em um post posterior.    Se utilizarmos um componente que pretende extrair ou inserir dados em um BD, obviamente precisaremos de, no mínimo, uma conexão configurada.   Havendo apenas uma conexão configurada na Transformation, esta opção virá automaticamente com o nome dela.   Havendo mais de uma, será necessário escolher.

2- SQL: espaço para o código SQL.    Importante lembrar que o componente "TABLE INPUT" espera sempre um retorno de dados, ou seja, caso deseje adicionar um insert, update ou delete no código, criar ou deletar tabelas, não há problema, desde que, ao final da query, haja um select para adicionar os dados do banco ao fluxo.

3- Replace Variables in Script: caso deseje substituir o nome de uma coluna, um valor na clausula WHERE ou qualquer etapa do código por uma variável proveniente de um step, transformation ou job anterior, basta habilitar esta opção.   A variável inserida no código deve estar escrita como ${VARIAVEL}.     Ex: select * from TABLE where id = ${ID}.

4- Insert data from step: caso deseje utilizar um valor (e não uma variável) proveniente do step imediatamente anterior dentro da mesma transformation, basta habilitar esta opção escolhendo o step anterior ligado ao Table Input.   Para colocar o valor dentro da query, basta utilizar ponto de interrogação.     Ex:   select * from TABLE where id = ? 
OBS 1:  Se o valor for um string ou uma data, o ponto de interrogação deve seguir o padrão sql normal, ou seja, deve ser colocado entre aspas simples. Ex:  select * from TABLE where name = '?' 
OBS 2: A quantidade de pontos de interrogação deve ser exatamente igual ao número de campos (colunas) provenientes do step anterior.   Se no step anterior estivermos passando 3 campos para o Table Input e a opção descrita no item 4 for ativada, precisaremos ter 3 pontos de interrogação utilizados dentro da query.

5 - Execute for each row:  por ser um componente de input e inserir dados (linhas) dentro do fluxo, este step costuma ser executado no início da transformation e apenas uma vez.   A opção EXECUTE FOR EACH ROW garante que o código será executado por cada linha que passar pelo fluxo.   Esta opção só poderá ser marcada se o item 4 também for.  Desta forma, o Table Input poderá ter steps que o precedem, recebendo os valores (campos e linhas) destes steps.

6- Preview: com o código finalizado, podemos fazer um PREVIEW para garantir que não há erros no código, visualizando um número determinado de linhas.

Outras opções:
Enable lazy conversion: evita conversões de tipos de dados desnecessários e pode resultar numa melhora significante de performance.
Limit size:  número de linhas que serão lidas da(s) tabela(s).   O zero (0), significa que todas as linhas serão lidas.

2 comentários:

  1. Muito bom seu post, sou iniciante em Pentaho e seu blog tem me ajudado muito!

    ResponderExcluir
  2. Cara, salvou a minha vida, kkkk, estava com dificuldade de buscar dados de uma tabela auxiliar, para uma nova inserção.
    Com a explicação do item 4 resolver o meu problema.
    Ótimo artigo, parabéns.

    ResponderExcluir