Olá pessoas! Essa semana me deparei com um caso onde precisava tratar um campo formato JSON em uma tabela com outros tipos de dados. Quando os dados estão todos em formato JSON é tranquilo, o problema é quando se tem dados de outro tipo na mesma tabela, conforme o exemplo abaixo:

O campo “DADOS” é o campo em questão. E provavelmente se você já possui uma certo conhecimento em Qlik deve estar pensando: “É só usar SubField()!” E pra um exemplo simples como esse até que é viável, mas no caso em que enfrentei o campo possuia vários atributos (mais de 60) , alguns deles eram aninhados e outros tinham mais de 1 nó por linha, e por esse motivo era inviável usar esta função.

Como eu resolvi?

Segue o exemplo:

Usando esta tabela como referencia.

O primeiro passo é ter uma referencia dentro do campo JSON.

Resultado de imagem para JASON
Sorry!

Eu fiz dessa forma:

Inserindo o campo ID dentro do JSON

O campo fica dessa forma:

É a partir daqui que a mágica acontece!

Usando parâmetro From_Field no LOAD junto ao campo JSON, é onde a auto-magia acontece.

O parâmetro faz o parser do formato JSON e te entrega uma tabelinha top:

Bom, ficou faltando o campo nome que estava na tabela original. A partir daqui você pode fazer como preferir. Deixar uma tabela só com o “ID” e o “NOME” para fazer o relacionamento, ou fazer um JOIN, etc. Eu usei o Mapping.

Considerações finais:

Se você quer saber mais sobre o From_Field, tem um post do mestre Clever com Q na Community: aqui.

Esta é a forma como eu resolvi e se quiser o código, aqui vai o meu github com o .qvs completo.

Funciona!

Eu agarantio!

Victor Bertoldo


Leave a Reply

Your email address will not be published. Required fields are marked *