O Pentaho é uma plataforma de construção de soluções de BI. Ele atende muitas necessidades, cada qual de uma maneira. Para quem está acostumado com o MicroStrategy, por exemplo, pode ficar um pouco chocado – como, não é só fazer um relatório? Pois é, o Pentaho faz bem mais coisas que “relatórios” e hoje eu vou mostrar aqui um truque eu aprendi com o (blog do) Nicholas Goodman, neste post. O site do blog dele, aparentemente, sumiu e esse é um dos motivos que me levou a postar aqui a mesma coisa. Repare que esse mesmo post também existe no fórum da Pentaho, neste link, ainda que sem as imagens ou arquivos.
O Problema
… é simples: seu usuário precisa “extrair os dados” da sua base (um DW, possivelmente) para usá-los em alguma outra atividade. Bom, seu cliente deveria gastar mais tempo com você e desenharem juntos uma solução com o Pentaho. Mas já que ele prefere ter mesmo tudo nas próprias mãos, vamos dar a ele a solução Pentaho que faz exatamente isso: baixa um pacotão com os dados extraídos do(s) banco(s).
A Solução
… é simples, também: vamos criar uma XAction no BI Server que, ao ser executada, baixa um arquivo de dados formatos em CSV. O “projeto” da solução é o seguinte:
- Usando o Spoon construa uma transformação que recupera os dados desejados. Por isso eu escrevi fontes de dados, no plural: com o PDI você pode combinar quantas quiser e ainda montar alguma coisa em cima;
- Crie a área de depósito, ou landing zone, na qual vamos deixar o arquivo que o usuário vai recuperar.
- Vá até o BI Server e crie uma nova solução (pasta de nível zero);
- Coloque a transformação dentro desta pasta;
- Construa a XAction que executa a transformação e devolve o arquivo.
A Implementação
Vamos passo-a-passo, mas eu preciso partir de um mínimo. Eu vou assumir que você:
- Já sabe usar o PDI (a.k.a. Kettle) para construir transformações;
- Consegue configurar e usar um BI Server, incluindo adicionar drivers;
- Sabe usar o Pentaho Design Studio para construir e implantar XActions.
Se você ainda não sabe alguma dessas coisas deixe um comentário que darei algumas dicas, ou me procure no Linkedin (Fábio de Salles).
Primeira Passo: Construindo a Consulta
Digamos que meu cliente, que é o Analista de Data Mining da Beltrano S/A (a empresa que usamos no livro) e quer uma listagem com todos os atributos dos pedidos, extraídos diretamente da base transacional (beltrano_oltp). Ele me deu o SQL, que é:
SELECT
pedidos.data_pedido,
pedidos.cliente_tipo,
pedidos.pagamento_tipo,
pedidos_detalhes.quantidade,
pedidos_detalhes.desconto,
pedidos_detalhes.total_item,
pedidos_detalhes.preco_unitario,
turmas.data_turma,
cursos.curso_nome,
cursos.duracao_total,
cursos.duracao_aula,
cursos.vagas,
cursos.preco_vaga,
pedidos.cliente_id,
pedidos.pedido_id
FROM
public.cursos,
public.pedidos,
public.turmas,
public.pedidos_detalhes
WHERE
pedidos.pedido_id = pedidos_detalhes.pedido_id AND
turmas.curso_id = cursos.curso_id AND
pedidos_detalhes.turma_id = turmas.turma_id;
De posse desse SQL eu crio uma transformação que executa-o e grava o resultado em um arquivo CSV, zipado para ocupar menos espaço e testo: (ops! minha base estava vazia quando eu fiz esse screenshot!)
Beleza, funcionou, etapa um pronta.
Segundo Passo: Preparando o BI Server
Em uma instalação padrão do BI Server (estou usando a 4.8), equipado com driver para meu banco (um Postgres), eu crio o diretório que vai receber o arquivo. Meu BI Server fica em /opt/pentaho/4.8/biserver-ce. Entro em tomcat, webapps e crio uma pasta chamada lz:
Agora eu subo o BI Server, faço login como joe e crio uma solução (=nome de pasta no nível zero):
Finalmente, eu volto à transformação e coloco como diretório do arquivo de saída a nova pasta lz, /opt/pentaho/4.8/biserver-ce/tomcat/webapps/lz:
Pronto, segunda etapa feita.
Terceira Etapa – XAction exporta_dados
Abra o Design Studio (estou usando o 4.0.0), aponte para o pentaho-solutions do BI Server 4.8 e crie uma nova XAction:
- Configure o PDS para apontar para ./biserver-ce/pentaho-solutions;
- Na pasta (solução) Exportacao de Dados crie uma nova XAction: clique com o botão da direita na pasta e selecione BI Platform – New Action Sequence. Dê um nome (eu chamei de exporta_dados);
- Preencha a ficha de identificação com o que bem entender, apenas evite acentos e cedilhas;
- Mude para aba 2 (Define Process);
- Clique com o botão da direita sobre Inputs e selecione Add – String;
- Nomeie a nova variável como redirect_uri;
- Ligue o check-box Has default value;
- Preencha o valor dela com o caminho do arquivo dentro da solução lz: /lz/dados.zip;
- Clique com o botão da direita sobre a área das Process Actions e selecione Add – Get Data From – Pentaho Data Integration;
- Clique sobre a nova Process Action e altere seu nome; eu mudei para Extrai para arquivo.
- Coloque o caminho da transformação em relação à solução (solution:/exporta_dados.ktr), no campo Transformation file;
- Ajuste apenas o Kettle logging level. Eu deixei em Minimal;
- Finalmente, adicione o comando que vai redirecionar o navegador para o arquivo que a transformação vai criar:
- Clique o sinal de + azul que existe na seção Process Outputs, e selecione a variável que criamos antes: redirect_uri;
- Clique sobre a variável, para selecioná-la, e clique no sinal de + azul, na folha de propriedades da variável de saída, e selecione response: redirect_uri;
- Dê um duplo-clique sobre redirect_uri e altere para redirect, apenas;
- Salve.
Para não ficar dúvidas:
E
Atualize o BI Server, para ele recarregar a XAction. Dê um duplo clique nela e veja a mágica acontecer: seu navegador vai dizer que tem um arquivo ZIP para baixar.
Voi là! Abra o arquivo e veja seu conteúdo: um CSV com os dados pedidos.
Conclusão
Por ser uma plataforma de BI e não uma ferramenta de visualização de dados OU de ETL OU de Data Mining OU … OU … etc., o Pentaho pode entregar muito mais que só relatórios. Certifique-se realizar uma entrevista detalhada e de explorar a necessidade e o uso que seu cliente vai dar ao projeto de BI, pois há muito mais ações entre o DW e os Dashboards que supõem nossos vãos relatórios.