Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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.
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
Coloque os seguintes parâmetros:
Depois disso, pode gerar o script para consulta, clicando na opção Selecionar Dados da conexão criada
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 !
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 !
Extremamente útil!! Vou guardar "na manga".
Valeu por compartilhar pedrobergo
Muito bom ! Parabéns e muito obrigado !
Irmão, eu só tenho a te agradecer!!! Está funcionando que é uma maravilha. Já ajustei pra fazer um monte aqui. Como não conheço JASON como pegaria a parte dos CNAEs? Desde já agradeço a atenção. Abcs