Skip to main content
Announcements
Live today at 11 AM ET. Get your questions about Qlik Connect answered, or just listen in. SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
julianotirex
Contributor
Contributor

Como unir XMLs sem Keys idênticas

Olá Pessoal, boa tarde, preciso unir várias XML de notas em uma unica tabela para listar venda e descricao da venda, porem a chave primaria se dá com o nome do arquivo. Para um só arquivo funciona legal, porem para vários XMLs (quando uso carregar por *.xml) a chave primaria se perde. Há uma forma de deixar essa Key como um * para referenciar também?

1 Solution

Accepted Solutions
pablolabbe
Luminary Alumni
Luminary Alumni

Lidar com XMLs não é tarefa simples.

Lembro que fiz uma implementação destas, mas infelizmente o codigo fonte está no cliente..

Posso dizer com certeza que usar *.xml não funciona. Já passei por isso..

Você tem que fazer um loop for para ler cada arquivo individualmenrte

a cada iteração você lê o bloco de loads que ele criou para ler o xml.

aqui tem um exemplo :

for each File in filelist ('<diretorio>\*-nfe.xml')

Estrutura do arquivo com Load

Load

<Campos 1>,

<Campos 2>,

<Campos 3>,

.

.

.

<campo N>

from $(File) (XmlSimple, Table is <xpath do xml>);

next File ;

sugiro também que no campo %Key você concatene o nome do arquivo e assim você cria uma chave unica que servirá para conectar as tabelas de cabecalho e detalhe:

FileName()&'|'&%Key_nfeProc_743443655465363OD as %Key_nfeProc_743443655465363OD


Abraço,


Pablo

View solution in original post

11 Replies
Thiago_Justen_

Juliano,

Me perdoe, mas não consegui captar com clareza o que você deseja. Como está seu script hoje? Você faz a carga via script ou pelo gerenciador de dados (self-service)?

Se for em Qlik Sense e se você puder, disponibilize o qvf para melhor apreciação.

Abs e Sucesso!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Thiago_Justen_

Pelo título da pergunta até imaginei que o concatenate resolveria...enfim, dê mais detalhes.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
julianotirex
Contributor
Contributor
Author

Olá Thiago, está em qvw

Mas copio aqui a linha de comando comentada

det:

LOAD nItem,

as ,

as ,

as orig,

as CSOSN,

as cProd,

as cEAN,

as xProd,

as NCM,

as CEST,

as CFOP,

as uCom,

as qCom,

as vUnCom,

,

as uTrib,

as qTrib,

as vUnTrib,

as indTot,

,

%Key_nfeProc_743443655465363OD // nesta chave está alguma referencia ao nome do arquivo, que nao consigo linkar quando é um soh funciona

FROM (XmlSimple, Table is );

nfeProc:

LOAD versao,

xmlns,

,

as ,

as verAplic,

as chNFe,

as dhRecbto,

as nProt,

as digVal,

as cStat,

as xMotivo,

,

as ,

as SignatureValue,

as X509Certificate,

as URI,

as DigestValue,

as ,

as ,

as ,

as qrCode,

as ,

as Id,

as tPag,

as vPag,

as modFrete,

as vBC,

as vICMS,

as vICMSDeson,

as vFCPUFDest,

as vBCST,

as vST,

as ,

as vFrete,

as vSeg,

as ,

as vII,

as vIPI,

as vPIS,

as vCOFINS,

as vOutro,

as vNF,

as CNPJ,

as xNome,

as xFant,

as IE,

as CRT,

as xLgr,

as nro,

as xCpl,

as xBairro,

as cMun,

as xMun,

as UF,

as CEP,

as cPais,

as xPais,

as fone,

as cUF,

as cNF,

as natOp,

as indPag,

as mod,

as serie,

as nNF,

as dhEmi,

as tpNF,

as idDest,

as cMunFG,

as tpImp,

as tpEmis,

as cDV,

as ,

as finNFe,

as indFinal,

as indPres,

as procEmi,

as verProc,

%Key_nfeProc_743443655465363OD // Key for this table: nfeProc

FROM (XmlSimple, Table is );

Quando pego um arquivo só XML ele link correto apresentando do jeito que eu preciso, pois a chave bate. FROM (XmlSimple, Table is );

Porem preciso pegar vários arquivos XML e referenciar genericamente, estou tentando com concatenate, porem estou fazendo algo errado e não vai.

A única chave que se cria é uma que remete ao nome do arquivo.

Espero ter sido mais claro.

Obrigado

De: THIAGO TEIXEIRA

Enviada em: quarta-feira, 7 de março de 2018 17:45

Para: juliano amantea

Assunto: Re: - Como unir XMLs sem Keys idênticas

Qlik Community <https://community.qlik.com/resources/images/palette-1004/headerLogo-1391206184624-QlikCommunity_logo.gif>

Thiago_Justen_

É possível enviar um xml de exemplo?

Outra coisa: dá uma olhada nesse tópico que abri e que o Pablo arrebentou.

Extraindo campos de tags XML

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
julianotirex
Contributor
Contributor
Author

Seguem xmls

Vou olhar sim,

Muitíssimo obrigado

De: THIAGO TEIXEIRA

Enviada em: quarta-feira, 7 de março de 2018 18:26

Para: juliano amantea

Assunto: Re: - Como unir XMLs sem Keys idênticas

Qlik Community <https://community.qlik.com/resources/images/palette-1004/headerLogo-1391206184624-QlikCommunity_logo.gif>

Thiago_Justen_

Juliano,

Sem dúvidas o que postei na thread que te indiquei servirá pra você. Segue o script que utilizo para que você possa adaptar.

Abs e Sucesso!!

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
julianotirex
Contributor
Contributor
Author

Ola Thiago, mais uma vez obrigado pela prontidão, analisei o script e realmente a primeira vista seria uma situação parecida, no entanto, o meu problema se dá por ter que unir vários arquivos. Por não haver chave entre os xmls coletivos (uma vez que individual ele busca a key pelo nome do arquivo) e quando vou carregar os xmls diretamente eu utilizo *.xml para carrega-los, acaba sendo este o problema.

Achar um jeito de colocar o nome em comum em larga escala.

Te mando o xml e o qvw para dar uma olhada.

Desculpa se pareço ignorante, mas ta difícil.

Rsrrsrs

Muitíssimo obrigado

De: THIAGO TEIXEIRA

Enviada em: quarta-feira, 7 de março de 2018 18:54

Para: juliano amantea

Assunto: Re: - Como unir XMLs sem Keys idênticas

Qlik Community <https://community.qlik.com/resources/images/palette-1004/headerLogo-1391206184624-QlikCommunity_logo.gif>

Thiago_Justen_

Cara, nem precisa se desculpar...pela thread que te mandei você viu que esse problema é bem comum e já que outro me ajudou, não tem porque não ajudar-te também.

Farei o possível pra te ajudar.

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
pablolabbe
Luminary Alumni
Luminary Alumni

Lidar com XMLs não é tarefa simples.

Lembro que fiz uma implementação destas, mas infelizmente o codigo fonte está no cliente..

Posso dizer com certeza que usar *.xml não funciona. Já passei por isso..

Você tem que fazer um loop for para ler cada arquivo individualmenrte

a cada iteração você lê o bloco de loads que ele criou para ler o xml.

aqui tem um exemplo :

for each File in filelist ('<diretorio>\*-nfe.xml')

Estrutura do arquivo com Load

Load

<Campos 1>,

<Campos 2>,

<Campos 3>,

.

.

.

<campo N>

from $(File) (XmlSimple, Table is <xpath do xml>);

next File ;

sugiro também que no campo %Key você concatene o nome do arquivo e assim você cria uma chave unica que servirá para conectar as tabelas de cabecalho e detalhe:

FileName()&'|'&%Key_nfeProc_743443655465363OD as %Key_nfeProc_743443655465363OD


Abraço,


Pablo