Consultando dados de uma API com Pentaho Data Integration (PDI).

Dieinimy Maganha
4 min readNov 23, 2020

Neste médium apresentarei como consultar uma API com o Pentaho.

Para demonstrar eu estou utilizando a API do IBGE, e você pode obter mais informações sobre a API através do link: https://servicodados.ibge.gov.br/api/doc.

O primeiro passo é criar um campo chamado url_ibge que será a URL chamada para realizar a consulta da API.

Para gerar esse campo utilizarei o step Generate rows.

A opção Limit é preenchida automaticamente com o valor 10, ou seja, serão geradas 10 linhas com as informações que passarmos no field. Neste caso precisamos apenas de 1 linha, sendo assim basta mudar o valor para 1.

Na coluna Name inseri o nome url_ibge, com o Type String e na coluna Value adicionei a url do endpoint.

URL do Endpoint: https://servicodados.ibge.gov.br/api/v1/localidades/distritos

No segundo passo utilizei o step Rest client, e para que os dados do step Generate rows fiquem disponíveis no step Rest client, fiz a conexão dos steps utilizando o hop:

Abrindo o step Rest client na aba General nas opções de Settings é necessário marcar a opção Accept URL from field? e no HTTP method deixar o método GET.

Já no Output fields onde retornará a resposta da nossa consulta, na opção Result field name precisamos informar o nome do campo que trará o resultado, eu coloquei o nome de list_ibge:

Executando nossa transformação teremos o resultado abaixo, neste caso a API nos retorna um json com os dados:

Pronto, realizamos a consulta de uma API. Simples né? Lembrando que essa API não possui nenhuma autenticação, então fica simples realizarmos a consulta.

Tentarei trazer cenários de APIs que utilizam autenticações nos próximos médiuns que eu publicar.

Como bônus vou apresentar como ler os dados do json que a API retornou e como deixá-los mais amigáveis.

O step Json input é responsável por ler os dados do formato json, mas fazer todo o mapeamento do dados é bem complicado, a maneira mais simples que eu encontrei para fazer o mapeamento, é copiar uma parte do json para nos auxiliar.

Vou utilizar o insomnia só para facilitar a explicação.

Na imagem abaixo temos o mesmo cenário que criamos no PDI, onde temos a url e qual método http utilizamos para fazer a requisição. No canto direito em preview nós temos o resultado da consulta da API no formato json. Não vou entrar nos detalhes da estrutura, mas aqui podemos notar que temos um array de objetos.

Para facilitar nossa leitura no Pentaho uma dica seria pegar o primeiro objeto do array e criar um novo arquivo com extensão .json

Para exemplificar, abaixo está como ficariam os dados no arquivo json. Além disso você pode realizar o download desse arquivo através do link https://github.com/dieinimymaganha/consultando_api_com_pdi/blob/main/dados_json.json

[
{
"id": 520005005,
"nome": "Abadia de Goiás",
"municipio": {
"id": 5200050,
"nome": "Abadia de Goiás",
"microrregiao": {
"id": 52010,
"nome": "Goiânia",
"mesorregiao": {
"id": 5203,
"nome": "Centro Goiano",
"UF": {
"id": 52,
"sigla": "GO",
"nome": "Goiás",
"regiao": {
"id": 5,
"sigla": "CO",
"nome": "Centro-Oeste"
}
}
}
}
}
}
]

Feito o procedimento anterior, agora precisamos abrir o step Json input e fazer o mapeamento dos dados conforme demonstrado abaixo:

Daria muito trabalho se fossemos fazer todo o mapeamento manualmente dos campos, com isso único trabalho que temos é renomear os campos da coluna Name:

Agora que já temos nossos campos todos mapeados, basta irmos na aba File e marcar a opção Source is from a preview step e informar qual o campo que contém os dados json.

Agora se executarmos nossa transformação, teremos o seguinte resultado:

Só para vermos melhor os dados podemos utilizar o step Select values e na aba Remove, selecionamos os campos list_ibge e url_ibge, ou seja, vamos remover as colunas que não nos interessa.

Com isso o resultado da nossa consulta a API ficaria conforme imagem abaixo:

Espero que esse médium seja útil para alguém 🙏🙏🙏🙏, e conto com o feedback de todos que chegarem até o final da leitura. Além disso aceito sugestões sobre novos assuntos relacionados ao Pentaho Data Integration e assuntos relacionados ao mundo de dados.

Você pode baixar essa transformação através do meu GitHub: https://github.com/dieinimymaganha/consultando_api_com_pdi

Perfil no linkedin: https://www.linkedin.com/in/dieinimy/

--

--