Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
dairan73
New 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?

Tags (1)
1 Solution

Accepted Solutions
mario_sergio_ti
Valued Contributor

Re: Divergência de valores

Amigo;

Consegui resolver, segue:

Substitua na parte //Agrupamento;;

De:

  Sum(ValorMovimentacao) As 'TotalValorMovimentacao', 

Por:

  Round(Sum(ValorMovimentacao),'0,01') As 'TotalValorMovimentacao',

O erro ocorre somente quando existe casas decimais no campo 'ValorMovimentacao';

Estranho que fiz vários testes, formatando com Num()..., no frond-end ficava normal com Num() no script, mas mesmo assim, na parte //Preenchendo_Intervalos_Datas estava apresentando erro na condição If() no While, não retornando -1(True/Verdadeiro) para os valores iguais para TotalValorMovimentacao=ValorLiquidoTitulo;


Enfim... Não existe mais de duas casas decimais, porém forcei um arredondamento "imaginário" e funcionou.

Pois TotalValorMovimentacao(470,67) > ValorLiquidoTitulo(470,67) estava retornando verdadeiro.

Primeira vez que vejo esta situação estranha.

45 Replies
mario_sergio_ti
Valued Contributor

Re: Divergência de valores

Amigo, tente;

Expressão para o campo teste:

Column(1)-Column(2)

dairan73
New Contributor III

Re: Divergência de valores

Mario,

O problema está no script mesmo, porque lembra que você me ajudou a criar no outro tópico? Então o campo SaldoDevedor fica mostrando 5,6843418860808e-014 e criando registros até hoje e não parando quando o saldo é 0, pois segundo ele 470,67 - 470,67 não é 0 haha

fabionakashigue
Contributor

Re: Divergência de valores

Douglas tem como postar um exemplo?

Não entendi muito bem pq você está fazendo esta estrutura do not exists.

mario_sergio_ti
Valued Contributor

Re: Divergência de valores

Amigo, estranho sua expressão da coluna "teste" ter apresentado este resultado;

Haja vista que as colunas dos cálculos apresentados na tabela estão ok;

Favor, não deixe de testar a expressão que te falei, me retorna com o resultado;

A função Collumn() utiliza o que é apresentado na tabela no seu caso, os números interno da função é a ordem das expressão;

Se as colunas ValorLiquidoTitulo e TotalValorMovimentacao não está como expressões, transforma-os;


Esta com problemas com o script que havia te passado? Ou ficou após ter incluido o seu script com Not Exists()?


fabionakashigue
Contributor

Re: Divergência de valores

Mario,

Acredito que o problema dele não seja nada relacionado ao exists. E sim a casas decimais, no caso funciona sem o exists pq ele busca a tabela completa com tabela de estornos, pois o valor no segundo caso o campo totalvalormovimentacao vai para 1412. Poderiamos fazer um teste com floor no script.

dairan73
New Contributor III

Re: Divergência de valores

Faço o Not Exists porque quando tem um título estornado, na tabela ficam 2 registros iguais só que apenas um tem o Tipo Movimentação = 'ES', mas preciso apagar os 2.

Exemplo:

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".

dairan73
New Contributor III

Re: Divergência de valores

É que o problema não ficou apenas na tabela, depois do Not Exists ele "bagunçou" o script:

2017-03-28 - 003.png

Quando ele deveria zerar o saldo, começou a colocar aquele valor 5,6843418860808e-014.

mario_sergio_ti
Valued Contributor

Re: Divergência de valores

Por padrão, vejo que quando formatado os campos numéricos, se necessário, o sistema arredonda os campos decimais no tipo round(); *Pelo menos no Qlik Sense, creio que o mesmo para Qlikview.

Mas a questão é que no resultado do campo "teste" temos 5,68... Ou seja, uma diferença considerável para ser por conta de arredondamento das casas decimais.

mario_sergio_ti
Valued Contributor

Re: Divergência de valores

Após inclusão do seu script... Foi gerado uma chave sintética?