Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
dairan73
Contributor III
Contributor III

Divergência de valores

Boa tarde,

Estou com um problema que não estou conseguindo identificar o porque acontece.

Tenho o código abaixo:

[Estornos]:

LOAD [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as [ChaveEstornoFiltro]   

FROM

(qvd)

Where [Cod. Tipo Movimentação Bancária] = 'ES';

Tabela:

LOAD

  *

FROM

(qvd)

Where

  Not Exists ([ChaveEstornoFiltro],[Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária])

Drop Table Estornos;

A ideia deste código é pegar todos os estornos e depois excluir da Tabela quem tem essa Chave (que possui estorno).

Ao rodar apenas esta parte do código, tudo funciona.

E depois tenho um código que pega e cria registros até o saldo ser zerado ou até hoje. (Através deste tópico: Re: Criar registros diários)

O problema está que se uso este "Not Exists" o resultado é esse:

2017-03-28 - 001.png

A coluna "teste" é o cálculo ValorLiquidoTitulo - TotalValorMovimentacao, mas como 470,67 - 470,67 resulta em 5,6843418860808e-014 ??


Mas se eu remover a parte do Not Exists da Tabela, tudo funciona normal: (Os valores de movimentação são diferentes pois sem o Not Exists ele está considerando estornos também)

2017-03-28 - 002.png


Alguém tem alguma ideia do que pode ser isto?

Labels (1)
45 Replies
mario_sergio_ti
Partner - Specialist
Partner - Specialist

Pode publicar seu script?

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
dairan73
Contributor III
Contributor III
Author

Não gerou chave sintética.

Segue em anexo o script.

mauroponte
Creator II
Creator II

Douglas tente o seguinte script:

[Estornos]:

LOAD [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as [ChaveEstornoFiltro]  

FROM

(qvd)

Where [Cod. Tipo Movimentação Bancária] = 'ES';

Tabela:

LOAD

   [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação           Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor           Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as           [ChaveEstornoFiltro] ,

     *

FROM

(qvd);


store Tabela indo E:\BI-PRD\4.Dados\Transformados\Fatos\Tabela.qvd;


Drop Table Tabela;


Tabela:

Load

          *

FROM

(qvd)

where not exists([ChaveEstornoFiltro]);

Drop Table Estornos;

dairan73
Contributor III
Contributor III
Author

Mesma coisa

Mas como já comentei, não sei qual a relação do not exists pra bagunçar todos os valores.

Teoricamente ele só tira registros da primeira tabela e depois a construção do histórico segue tudo igual.

fabionakashigue
Partner - Creator
Partner - Creator

Douglas,

Olhando seu script, parece que realmente é um problema apenas de casa decimal. Aquele seu campo "teste" é o que está no objeto? Se for ... Tenta dar um floor ou round lá no script onde você faz o calculo.

mario_sergio_ti
Partner - Specialist
Partner - Specialist

Amigo;

Percebi que no script que havia feito para você;

Faltou você manter a fonte de dados da tabela "temp_Extrato" e do Left Join (temp_Extrato) iguais;

Então, segue para substituir;

Left Join (temp_Extrato) 

//Dados da fonte 

NoConcatenate Load 

  ChaveTitulo, 

  DataMovimentacao As Data, 

  ValorMovimentacao; 

LOAD  

ChaveTitulo, DataMovimentacao, ValorMovimentacao 

Resident PreviaTitulosInadimplentes

Where ChaveTitulo = 'MVN|003498|FT|   |01|050813';

DROP TABLE PreviaTitulosInadimplentes; 

A fonte de dados para a tabela "temp_Extrado" você utilizou a tabela PreviaTitulosInadimplentes utilizando Residente, e onde encontrei os filtros faltantes. Incluir o Resident no Left Join também para manter a mesma estrutura de dados e remanejei o DROP TABLE PreviaTitulosInadimplentes para após o Left Join.

Sobre o Exists;

Percebi que é criado tabelas "Estornos" e "Tabela", e excluído em seguida, sem utilização no script,

Mas o filtro poderia ser feito assim:

//De, ORIGINAL:

[Estornos]:

LOAD [Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária] as [ChaveEstornoFiltro]  

FROM

(qvd)

Where [Cod. Tipo Movimentação Bancária] = 'ES';

Tabela:

LOAD

  *

FROM

(qvd)

Where

  Not Exists ([ChaveEstornoFiltro],[Filial Tit. Movimentação Bancária]&'|'&[Prefixo Tit. Movimentação Bancária]&'|'&[Número Tit. Movimentação Bancária]&'|'&[Parcela Tit. Movimentação Bancária]&'|'&[Tipo Tit. Movimentação Bancária]&'|'&[Cliente/Fornecedor Tit. Movimentação Bancária]&'|'&[Loja Tit. Movimentação Bancária]&'|'&[Sequência Movimentação Bancária]);

//Para:

Tabela:

LOAD * FROM (qvd)

  Where [Cod. Tipo Movimentação Bancária] <> 'ES';

Mas não encontrei utilidade com o restante do script;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti
mauroponte
Creator II
Creator II

Douglas,

Voce pode anexar o QVW e o QVD pra terna ajudar?

dairan73
Contributor III
Contributor III
Author

É que estava dando um exit script logo depois do Drop Table PreviaTitulosInadimplentes, então nem chegava a rodar o left join, pois assim ele já mostra o valor errado (5,6843418860808e-014) e nao 0.

Sobre o filtro, faço daquela maneira pois como expliquei mais acima, tenho a seguinte situação:

Chave          Valor          Receb/Pag     Tipo

ChaveA1     200             Recebimento     NOR

ChaveA1     200             Pagamento        ES

ChaveA2     400             Recebimento     MOT

ChaveA3     100             Recebimento     NOR


Neste caso, preciso excluir os 2 registros que tenham a "ChaveA1".

E com teu código vou excluir apenas quem tem o Tipo 'ES' e o primeiro registro, que a chave é a mesma vai permanecer.

dairan73
Contributor III
Contributor III
Author

Anexei mais acima, em outra resposta..

mario_sergio_ti
Partner - Specialist
Partner - Specialist

O script não está finalizando com sucesso? Toda a estrutura?

Tenta da forma que coloquei, pois inclui NoConcatenate logo depois do Left Join;

Se não rodar o Left Join corretamente, certamente dará erro;

Consultor certificado | Quem compartilha, aprende!
https://www.linkedin.com/in/mariosergioti