Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia!
Preciso ler vários arquivos XML e XLS de uma pasta.
Exemplo:
1.xml
2.xml
3.xml
Os arquivos possuem as mesmas colunas mas esta carregando apenas o primeiro arquivo fiz um teste excluindo o primeiro aí ele passa a carrega o primeiro encontrado.
Coloquei conforme exemplo abaixo e não funcionou
FROM [XML_arquivos\*.xml] (XmlSimple, Table is [mensagemTISS]);
Carlos, a sintaxe é essa mesmo, utilizar o caractere asterisco para ler vários arquivos (ou então por FOR). O que você precisa levar em consideração são os campos que estão sendo carregados.
Para facilitar, consegue postar o script que esta utilizando e se possível os arquivos xml também?
Bom dia!
Não consigo postar as informações não são informações de teste estou tratando arquivos de produção. Tenho informações confidenciais
Ok, mas pelo menos o script será necessário para entender o erro que esta ocorrendo
XMLSUL:
LOAD quantidadeExecutada,
valorProcessado,
[procedimento/codigo] as codigo,
[procedimento/tipoTabela] as tipoTabela,
[procedimento/descricao] as descricao,
%Key_dadosGuia_932648AE386CACC8 // Key to parent table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia/procedimentos/dadosProcedimento]);
Left Join(XMLSUL)
LOAD numeroGuiaPrestador,
dataRealizacao,
%Key_demonstrativoAnaliseConta_C282603095E315F3, // Key to parent table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta
%Key_dadosGuia_932648AE386CACC8 // Key for this table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia]);
Left Join(XMLSUL)
LOAD valorProcessadoGeral,
valorLiberadoGeral,
valorGlosaGeral,
[cabecalhoDemonstrativo/dataEmissao] as dataEmissao,
[identificacaoFontePagadora/operadoraRegulada/registroANS] as [operadoraRegulada/registroANS],
[identificacaoFontePagadora/operadoraRegulada/CNPJ] as CNPJ,
[identificacaoFontePagadora/operadoraRegulada/nomeOperadora] as nomeOperadora,
%Key_mensagemTISS_AE9B42D256CCB348, // Key to parent table: mensagemTISS
%Key_demonstrativoAnaliseConta_C282603095E315F3 // Key for this table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta]);
Left Join(XMLSUL)
LOAD [xmlns:ansTISS],
[cabecalho/identificacaoTransacao/sequencialTransacao] as sequencialTransacao,
[cabecalho/identificacaoTransacao/dataRegistroTransacao] as dataRegistroTransacao,
[cabecalho/identificacaoTransacao/horaRegistroTransacao] as horaRegistroTransacao,
%Key_mensagemTISS_AE9B42D256CCB348, // Key for this table: mensagemTISS
FileBaseName () AS Competencia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS]);
Olá Carlos!
Posso estar errado, mas eu acredito que o Qlikview não está entendendo o que você quer fazer, devido aos Joins.
Eu acho que você vai ter que fazer um For para ler todos os arquivos, e ir concatenando-os. Depois então você usar este "tabelão" em um Join.
Seu erro esta na utilização do JOIN na leitura de múltiplos arquivos.
Veja esse post que explico certinho o erro e como se resolve: Cuidado com a leitura de múltiplos arquivos em união de tabelas (JOIN) | Blog do Nicolett
É isso mesmo
Tem possibilidade de ler todos os arquivos mantendo essa o left join conforme abaixo:
XMLSUL:
LOAD quantidadeExecutada,
valorProcessado,
[procedimento/codigo] as codigo,
[procedimento/tipoTabela] as tipoTabela,
[procedimento/descricao] as descricao,
%Key_dadosGuia_932648AE386CACC8 // Key to parent table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia/procedimentos/dadosProcedimento]);
Left Join(XMLSUL)
LOAD numeroGuiaPrestador,
dataRealizacao,
%Key_demonstrativoAnaliseConta_C282603095E315F3, // Key to parent table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta
%Key_dadosGuia_932648AE386CACC8 // Key for this table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta/fatura/dadosFatura/lote/dadosLote/guia/dadosGuia]);
Left Join(XMLSUL)
LOAD valorProcessadoGeral,
valorLiberadoGeral,
valorGlosaGeral,
[cabecalhoDemonstrativo/dataEmissao] as dataEmissao,
[identificacaoFontePagadora/operadoraRegulada/registroANS] as [operadoraRegulada/registroANS],
[identificacaoFontePagadora/operadoraRegulada/CNPJ] as CNPJ,
[identificacaoFontePagadora/operadoraRegulada/nomeOperadora] as nomeOperadora,
%Key_mensagemTISS_AE9B42D256CCB348, // Key to parent table: mensagemTISS
%Key_demonstrativoAnaliseConta_C282603095E315F3 // Key for this table: mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS/operadoraParaPrestador/demonstrativosRetorno/demonstrativoAnaliseConta]);
Left Join(XMLSUL)
LOAD [xmlns:ansTISS],
[cabecalho/identificacaoTransacao/sequencialTransacao] as sequencialTransacao,
[cabecalho/identificacaoTransacao/dataRegistroTransacao] as dataRegistroTransacao,
[cabecalho/identificacaoTransacao/horaRegistroTransacao] as horaRegistroTransacao,
%Key_mensagemTISS_AE9B42D256CCB348, // Key for this table: mensagemTISS
FileBaseName () AS Competencia
FROM [XML TESTE\*.xml] (XmlSimple, Table is [mensagemTISS]);
Carlos,
Você deve trabalhar fazer um loop onde a cada arquivo lido você monta uma tabela temporária com as junções necessárias. Ao final das junções você concatena esta tabela temporária a tabela principal que possui os registros de todos os arquivos.
Então você deve modificar a lógica do seu script da seguinte formar:
- Abra um Loop com comando FOR EACH para ler os xmls da pasta
- renomeie o LABEL da tabela XMLSUL para XMLSUL_TEMP assim como as referencias no join
- Ao final da sequencia de todos os load com JOINS acrescente os comandos
//cria tabela principal na primeira iteração e depois concatena autormaticamente na principal a partir da segunda iteração do Loop
XMLSUL:
LOAD * RESIDENT XMLSUL_TESTE;
//remover a tabela temporária que será recriada na leitura do próximo arquivo
DROP TABLE XMLSUL_TESTE;
- Feche o loop com comando NEXT com o nome da varável declarada lá no FOR.
Abraço,
Pablo Labbe