Você está na página 1de 17

Hacking Pentaho Data

Integration – Kettle
Avançado II
Indíce
1Hacks..................................................................................................................................................2
Hack 770 - Call DB procedure, Check if a column exists...............................................................3
Hack 772 - Check if file is locked, File Exists, Database Join, JavaScript, Set Variables,
Transformation Executor.................................................................................................................7
Hack 773 - Database Join.............................................................................................................14
2Sobre o Documento..........................................................................................................................17
Créditos..........................................................................................................................................17
Referências Bibliográficas.............................................................................................................17
Histórico do Documento................................................................................................................17
1 Hacks
Cria uma pasta no diretório /opt/pentaho/hacks/ para armazenamento dos hacks que
realizaremos no PDI.

Hack 770 - Call DB procedure, Check if a column exists

1. Crie uma nova transformação File → Novo → Transformação.

2. Salve a transformação como hack707-Call-DB-procedure.ktr

3. Crie uma conexão com datawarehouse_olap.

4. Acesse o Mysql, seleciona a base datawarehouse_olap e execute a seguinte função:


DELIMITER $$

DELIMITER $$

CREATE FUNCTION Clientes (id varchar(30))


RETURNS varchar (30)
BEGIN
DECLARE select_var varchar (30);
SET select_var = (select nome from dim_cliente where fk_cliente = id);
RETURN select_var;
END
5. Adicione o step table input, selecione a conexão datawarehouse_olap
6. Insira a query abaixo:

SELECT
  fk_cliente
, fk_produto
, fk_regiao
, fk_tempo
, fk_vendedor
, qtd_venda
, vlr_venda
FROM fato_pedidos

7. Adicione um novo step Call DB Procedure


8. Selecione a conexão datawarehouse_olap, na propriedade Nome da Proc
selecione o nome da função que criamos anteriormente.
9. Na propriedade Nome do Resultado insira Nome do Cliente
10. Na propriedade Tipo do Resultado, selecione a opção String
11. Nos parametros insira:
Nome: selecione a fk_cliente
Diração: IN
Tipo: String
12. Insira um novo step no inicio do fluxo Microsoft Excel Input
13. Selecione a planilha idade.xlsx, na aba fields selecione a opção Obter Campos
14. Clique em OK

15. Insira um novo step Stream lookup, selecionando um hop de entrada a partir do
step Call DB Procedure e um hop de entrada a partir do step Microsoft Excel Input
16. Na propriedade Lookup step selecione o step anterior Microsoft Excel Input
17. Na área The key(s) to look up the value (s), na coluna Field selecione o campo
fk_cliente e na coluna LookUpField selecione o campo fk_cliente
18. Na área Specify the fields to retrieve, na coluna Field, selecione o campo Idade e
defina o Type como String
19. Clique em OK
20. Adicione um step Check if a column exists, selecione a conexão
datawarehouse_olap, na propriedade Table name selecione a tabela dim_cliente
21. Na propriedade Columnname field selecione o campo Idade.

22. Com esse step vamos verificar se a coluna Idade existe na tabela dim_cliente.
23. Adicione um step Insert Update, selecione a conexão datawarehouse_olap,
24. Configure as seguintes propriedades:
25. No botao sql, execute a query
ALTER TABLE dim_cliente ADD Idade DOUBLE;
26. Clique em Ok.

Hack 772 - Check if file is locked, File Exists, Database Join, JavaScript,
Set Variables, Transformation Executor

1. Crie uma nova transformação File → Novo → Transformação.

2. Salve a transformação na pasta de hacks como o nome hack772-check-file-locked


3. Selecione step Microsoft Excel Input, adicione o arquivo CPF.xlxs
4. Adicione o step Get File Names, vamos capturar as informações desse arquivo

5. Adicione o step File exists e configure conforme imagem abaixo

6. Adicione o step Check if file is locked e configure conforme imagem abaixo


7. Adicione o step Filter rows e configure conforme imagem abaixo

8. Caso nossa condição seja FALSE nosso fluxo sera interrompido utilizando o step
Dummy, caso TRUE será realizada a chamada de outra tranformação através do
step Set Variables e Transformation Executor
9. Adicione o step Set variables e configure conforme figura abaixo:

10. Adicione o step Transformation Executor, vamos informar o arquivo .ktr da nova
transforção e informar que vamos utilizar a variável criada anteriormente:
11. Abra a nova Transformação criada anteriormente
12. Selecione step Microsoft Excel Input, configure conformer imagem, na aba fiels
selecione a opção Obter Campos
13. Adicione o step database lookup, configure conforme imagem abaixo:

14. Adicione o Step Modified Java Script Value, com esse step iremos realizar a
validação do CPF do nosso cliente;
15. Adicione o seguinte script:
//Script here

function valida_cpf(CPF)
{
CPF = CPF.replace('.', '');
CPF = CPF.replace('.', '');
CPF = CPF.replace('-', '');

if (CPF == "00000000000" || CPF == "" ||


CPF == "11111111111" ||
CPF == "22222222222" ||
CPF == "33333333333" ||
CPF == "44444444444" ||
CPF == "55555555555" ||
CPF == "66666666666" ||
CPF == "77777777777" ||
CPF == "88888888888" ||
CPF == "99999999999") {
return false;
}

// Aqui começa a checagem do CPF


var POSICAO, I, SOMA, DV, DV_INFORMADO;
var DIGITO = new Array(10);
DV_INFORMADO = CPF.substr(9, 2); // Retira os dois Últimos dígitos do número informado

// Desemembra o número do CPF na array DIGITO


for (I=0; I<=8; I++) {
DIGITO[I] = CPF.substr( I, 1);
}

// Calcula o valor do 10º dígito da verificação


POSICAO = 10;
SOMA = 0;
for (I=0; I<=8; I++) {
SOMA = SOMA + DIGITO[I] * POSICAO;
POSICAO = POSICAO - 1;
}

DIGITO[9] = SOMA % 11;

if (DIGITO[9] < 2) {
DIGITO[9] = 0;
}
else{
DIGITO[9] = 11 - DIGITO[9];
}

// Calcula o valor do 11º dígito da verificação


POSICAO = 11;
SOMA = 0;
for (I=0; I<=9; I++) {
SOMA = SOMA + DIGITO[I] * POSICAO;
POSICAO = POSICAO - 1;
}

DIGITO[10] = SOMA % 11;


if (DIGITO[10] < 2) {
DIGITO[10] = 0;
}
else {
DIGITO[10] = 11 - DIGITO[10];
}

// Verifica se os valores dos dígitos verificadores conferem


DV = DIGITO[9] * 10 + DIGITO[10];
if (DV != DV_INFORMADO) {
return false;
}
else
return true;
}

//var varcpf = CPF


var varstatus;

if (valida_cpf(CPF))
varstatus = "Verdadeiro";
else
varstatus = "Falso";

16. Na área fields selecione o retorno varstatus com o tipo String.

17. Adicione o step Insert Update, selecione a conexão datawarehouse_olap


18. Na propriedade target table selecione a tabela dim_cliente
19. No botão sql execute o script:

ALTER TABLE `datawarehouse_olap`.`dim_cliente`


ADD COLUMN `CPF` VARCHAR(45) NULL AFTER `versao`,
ADD COLUMN `varstatus` VARCHAR(45) NULL AFTER `CPF`;

20. Configure conforme a imagem abaixo:


Hack 773 - Database Join
1. Crie uma nova transformação File → Novo → Transformação.
2. Salve a transformação na pasta de hacks como o nome hack773-database-Join

3. Adicione o step Table Input e insira a seguinte query de consulta na base ERP_OLTP

SELECT
codigo_produto,
codigo_fornecedores,
quantidade_estoque,
descricao,
PRECO,
linha_produto
FROM produtos

4. Adicione o step Database join e realize a configuração abaixo:


5. Adicione o step Database join novamente e realize a configuração abaixo:
6. Adicone o step text Output e configure conforme a imagem abaixo:

7. Na aba fields selecione os campos para inserção no arquivo

2 Sobre o Documento.
Parte deste documento e baseado em artigos técnicos, tutoriais, posts de blogs e outras
referências que encontramos livremente na Internet, os mesmo são compilados de uma forma mais
organizada e complementados com nossa contribuições. Todas as marcas citadas neste documentos
são de responsabilidade de seus devidos criadores. A Ambiente Livre é uma marca própria e não
tem nenhum vinculo com nenhuma das marcas citadas.

Créditos
Todos os direitos reservados – Ambiente Livre Tecnologia.

Referências Bibliográficas
RSS - http://pt.wikipedia.org/wiki/RSS

Histórico do Documento.

Versão 2.0 – Versão 4.3 do Pentaho Data Integration – Fevereiro de 2012 – Marcio Junior Vieira
<marcio em ambientelivre.com.br>

Você também pode gostar