Qlik Community

Brasil

Announcements
Submit your remarkable customer story for the Global Transformation Awards at QlikWorld Denver 2022. SUBMIT A STORY
cancel
Showing results for 
Search instead for 
Did you mean: 
pedrobergo
Employee
Employee

Consultando dados de empresas pelo CNPJ

Olá a todos,

Em um dos projetos que participei recentemente me deparei com uma base de dados não muito boa (se isso não aconteceu com você ainda, com certeza vai em breve!!).

O cliente possuía uma boa quantidade de registros de CNPJs com suas informações básicas bem aquém da necessidade, como Razão Social incompleta, endereços fajutos, cidades que não existem, e por aí vai...  e não havia como convencer o cliente que sem essas informações seria impossível plotar no mapa ou mesmo uma tabela as empresas de uma mesma cidade.

Bem, a receita federal brasileira disponibiliza uma API para realizarmos consultas e devolve uma série de informações, a saber,

- Dados Principais: CNPJ, Endereço, Bairro, Cidade, Uf, Situação Cadastral, Data da Abertura, Capital Social.

- QSA - Quadro de Sócios e Administradores.

- Atividade Principal: CNAE das atividades

- Atividades Secundárias: CNAE das atividades

O url da API é https://www.receitaws.com.br/v1/cnpj/

A documentação está em https://receitaws.com.br/api e os preços para pacotes pagos estão em https://receitaws.com.br/pricing.

Bem, voltando a API, o formato de resposta é um JSON bem simples contendo um nó pai (root) com os dados básicos e outros nós contendo o restante dos dados. O Qlik interpreta cada nó como uma tabela separada, dessa maneira, a conexão devolve até 5 tabelas. Como a resposta ocorre a cada chamada, é necessário criar um loop passando o parâmetro do CNPJ e efetuar a concatenação dos registros na tabela desejada.

Como configurar a conexão

Para configurar o acesso, comece criando uma conexão REST e inserir um CNPJ qualquer para permitir que o Qlik detenha os registros. Você poderá utilizar por exemplo o CNPJ da Rede Globo: https://www.receitaws.com.br/v1/cnpj/27865757000102

Tela1.png

Coloque os seguintes parâmetros:

  • Auto detect response type: yes
  • Check response type during 'Test connection': yes
  • Key generation strategy: No keys
  • Authentication Schema: Anonymous
  • Skip server certificate validation: yes

Criando o script de leitura:

Depois disso, pode gerar o script para consulta, clicando na opção Selecionar Dados da conexão criada

Tela2.png

Mas isso só vai fazer você obter a consulta com o CNPJ da Rede Glogo informado na conexão, então é necessário editar o script e aplicar a clausula WITH CONNECTION que permite passar parâmetros dinâmicos à conexão, como o CNPJ desejado.

Faça assim: antes do Select, crie uma tabela contendo os registros de CNPJ desejados.

[TabCNPJ]:

LOAD * INLINE [

CNPJ

05.222.267/0001-47

13.017.323/0001-30

20.831.339/0001-47

];

Depois crie um Loop para ler todos os CNPJs dessa tabela:

LET vNumReg = NoOfRows('TabCNPJ');

FOR vReg = 0 TO $(vNumReg) - 1;


    LET vCNPJ = KeepChar(Peek('CNPJ',$(vReg),'TabCNPJ'),'0123456789');

    LET vURL = 'https://www.receitaws.com.br/v1/cnpj/'&(vCNPJ);


Depois acrescente a cláusula WITH CONNECTION (URL "xxxx") ao final do SELECT, onde xxx é o endereço ajustado com o CNPJ, ou seja, a variável vURL.

(...)

FROM JSON (wrap on) "root" PK "__KEY_root"

WITH CONNECTION (

            URL "$(vURL)")

;

(...)

Finalize o loop acrescentando os dados a tabela desejada. Você ainda deve aproveitar ou desprezar os LOAD gerados logo abaixo da cláusula SELECT.

    [Empresas]

    LOAD *

      RESIDENT RestConnectorMasterTable

      WHERE NOT IsNull([__KEY_root])

        AND [status]<>'ERROR';

 

NEXT;



ATENÇÃO !

A API gratuita da receita limita a 3 consultas por minuto, e como possui 4 tabelas, ao usar o botão Selecionar Dados 2 vezes já irá dar uma mensagem de erro para você, portanto, recomendo montar o script e deixar gerando em loop com uma pausa a cada 3 consultas.

Aplicação modelo

Para ilustrar tudo isso construí uma aplicação que faz a busca dos dados de CNPJs a partir de um arquivo texto e gera um QVD de forma incremental com o resultado. Esse QVD pode ser utilizado em qualquer aplicação Qlik.

A aplicação funciona de forma incremental e com isso, é possível que aplicação seja interrompida por algum erro na conexão ou mesmo por desejo do usuário. Ela sempre irá retornar ao ponto de parada, pois irá carregar os dados já gravados no QVD.

Basta apontar o diretório da conexão PastaDados para o local que guarda seus arquivos e por pra rodar.

Espero que esse exemplo contribua para o projeto de todos,

Abs,

Pedro Bergo !

Labels (3)
2 Replies
thiago_justen

Extremamente útil!! Vou guardar "na manga".

Valeu por compartilhar pedrobergo

Thiago Justen Teixeira Gonçalves
WhatsApp: 24 98152-1675
Skype: justen.thiago
ernestolmalves
Contributor III
Contributor III

Muito bom ! Parabéns e muito obrigado !