Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
Where [Cod. Tipo Movimentação Bancária] = 'ES';
Tabela:
LOAD
*
FROM
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:
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)
Alguém tem alguma ideia do que pode ser isto?
Pode publicar seu script?
Não gerou chave sintética.
Segue em anexo o script.
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
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
store Tabela indo E:\BI-PRD\4.Dados\Transformados\Fatos\Tabela.qvd;
Drop Table Tabela;
Tabela:
Load
*
FROM
where not exists([ChaveEstornoFiltro]);
Drop Table Estornos;
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.
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.
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;
Douglas,
Voce pode anexar o QVW e o QVD pra terna ajudar?
É 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.
Anexei mais acima, em outra resposta..
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;