Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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?
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
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!
Pelo título da pergunta até imaginei que o concatenate resolveria...enfim, dê mais detalhes.
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>
É possível enviar um xml de exemplo?
Outra coisa: dá uma olhada nesse tópico que abri e que o Pablo arrebentou.
Abs e Sucesso!!
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>
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!!
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>
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.
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