Olá meus amigos! tudo bem com vocês? Espero que sim!
Conforme o explicado no post anterior hoje vamos iniciar o projeto COVID-19 obtendo os dados da API Covid19 Brazil disponível em: https://covid19-brazil-api.now.sh
Para iniciar vou utilizar o Pentaho Data Integration para conectar na API e utilizar o método GET para extrair os dados disponibilizados no formato JSON, os quais serão transformados e gravados em um banco de dados relacional (MySQL), sendo utilizados para alimentar um Dashboard feito diretamente no Power BI. Para quem quiser replicar os passos que vou apresentar aqui e não tem o PDI instalado segue o post onde indico os passos para a instalação do PDI
Para começar vamos analisar a API’s que vamos utilizar. No link https://covid19-brazil-api-docs.now.sh encontramos 6 API’s:
- Lista casos por todos estados brasileiros: https://covid19-brazil-api.now.sh/api/report/v1
- Lista casos por estado brasileiro: https://covid19-brazil-api.now.sh/api/report/v1/brazil/uf/sp
- Lista casos no brasil em data específica: https://covid19-brazil-api.now.sh/api/report/v1/brazil/20200318
- Lista casos por país: https://covid19-brazil-api.now.sh/api/report/v1/brazil
- Lista casos por países: https://covid19-brazil-api.now.sh/api/report/v1/countries
- Consultar status da API: https://covid19-brazil-api.now.sh/api/status/v1
e cada uma delas tem uma amostra de resultado, neste post vamos usar como exemplo a Lista casos por todos estados brasileiros:

Vejam que o retorno da API é um arquivo Json com 8 campos:
uid, uf, state, cases, deaths, suspects, refuses e datetime
Observação: No preview apesar de mostrar os campos “broadcast e “comments” os mesmo não estão presentes no JSON final, por isso uma boa pratica é não confiar só na documentação e realizar um teste antes de iniciar a criação do Pipeline de dados.
Para iniciar a construção do nosso pipeline de dados vamos adicionar um componente Generate rows. O Gerador de linhas é normalmente utilizado para gerar linhas gera um número especifico de linhas que por padrão são vazias, no entanto, elas podem conter vários campos estáticos. Esta etapa é usada principalmente para fins de teste. E geralmente é útil para gerar uma linha que é um ponto inicial da transformação. Em nosso exemplo vamos gerar 1 linha indicando o Limit igual a “1”, o Name vai ser “URL” o Type “String” e o valor será a url da API:
https://covid19-brazil-api.now.sh/api/report/v1

Agora vamos adicionar o componente Rest Client, nele vamos marcar a opção Accept URL from field?, em URL field name vamos adicionar a coluna criada no Generate rows, em HTTP method vamos selecionar “GET”, conforme a documentação. O retorno da API em Result field name se chamará result por padrão podendo ser alterado.

Vamos continuar o pipeline adicionando um JSON Input, vamos marcar o check-box Source is from a previous step indicando que as informações da etapa anterior serão a origem das informações e indicar o “result” no Select field.

Ainda no componente JSON Input em Fields, vamos adicionar as colunas contidas no retorno do JSON.

em Path indicamos o “nível” do campo caso tenhamos campos aninhados devemos informar os níveis superiores e inferiores.
Agora vamos remover as colunas que não nos interessam mais usando o componente Select Values e indo na aba Remove:

O próximo passo é gravar as informações no banco usando o componente Table output. Primeiro devemos indicar uma conexão no campo Connection (não vou detalhar a criação da conexão pois a mesma é autoexplicativa sendo necessário basicamente informar o host name, usuário e senha), no campo Target table informamos a tabela onde os dados serão criados, o restante vou deixar como padrão.

no nosso caso a tabela não existe então antes de finalizar a configuração temos que clicar no botão SQL:

Porem como podemos ver nem sempre o Pentaho acerta no tipo dos campos então vamos ajustar conforme segue:

Ao finalizar temos que clicar em Execute, para executar o comando no banco e criando a tabela

Agora com o pipeline criado vamos executar

Agora vamos conferir os dados gravados no MySQL:

Pronto! agora com os dados gravados no banco podemos dar continuidade ao projeto, mas vamos deixar isso para outro post. Até lá pessoal!
Um comentário em “Projeto COVID 19 – Obtendo os Dados com o PDI”