Skip to main content

Brasil

Announcements
CUSTOMERS ONLY: Now accepting customer applications for the 2023 Luminary Program: SUBMIT 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