Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Bom dia, senhores.
Mais uma vez recorro aos senhores...
Estou começando um painel, para fazer uma comparação entre pedidos de compras e pagamentos realizados, por conta financeira (gerencial). O objetivo é saber, baseado num orçamento por conta financeira, se meus pedidos estão dentro do orçamento, para determinada conta financeira, em determinado mês e ano.
O que ocorre é o seguinte, na minha tabela pedidos, tenho o campo de DT_DA_PARCELA_PED, que através de extract no oracle criei MES_VENC, e ANO_VENC, estes dois últimos que provavelmente não usaria, ficaram apenas para testes, pois tenho uma tabela CALENDÁRIO, que pega todas as datas dos fatos e reúnem numa única DATA.
O problema é o seguinte, quando seleciono MÊS e ANO, da tabela CALENDÁRIO, obtenho um valor, quando seleciono o MES_VENC, e ANO_VENC (ambos vindos, na teoria, do mesmo lugar), obtenho quase o dobro do valor....
Não sei porque isso ocorre.
Já comentei todo o código do painel inclusive toda LINK_TABLE, deixei o fato PEDIDOS somente com o CALENDÁRIO, e o problema persiste.
O problema só se resolve se eu sumir com a tabela CALENDÁRIO, o que não posso, por causa da LINK_TABLE....
Seguem as fotos do painel, com as seleções e valores, também estou anexando o painel principal e o gerador (etl) de qvds...
Por favor, me deem uma luz.
O valor errado R$611.012,
O valor correto R$1.398.737,
Obrigado.
Bom dia Marcos,
O relacionamento entre as tabelas de pedidos e calendário está com problema.
Terá que truncar a DATA e formatar para apresentar da mesma forma.
Verifique a imagem abaixo:
Você terá que converter o valor da Data no pedido e linktable para apresentar de forma correta usando Date(Floor(DATA)):
Segue sugestão (não foi testado):
// ------------------------
PEDIDOS:
LOAD Distinct
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO) as %SK_PEDIDOS,
ID_PEDIDO,
CD_PEDIDO,
ID_PARCELA_PEDIDO_ORCAMENTO,
//NULL() AS ID_CONTA_BANCARIA,
//%ID_EMPRESA,
STATUS_PED,
%ID_ALMOXARIFADO,
%ID_FORNECEDOR,
VL_DA_PARCELA_PED,
VL_DA_PARCELA_ORC_PED,
//Date(DATA, 'DD/MM/YYYY') AS DATA,
DT_DA_PARCELA_PED,
MES_VENC,
ANO_VENC,
If(day(DATA) < 13, 'De 01 a 12',
If(day(DATA) < 18, 'De 13 a 17',
If(day(DATA) < 23, 'De 18 a 22',
If(day(DATA) < 28, 'De 23 a 27', 'De 28 a 30/31')))) as [Vencimentos_pedidos]
//%ID_CONTA_GERENCIAL,
//%ID_UNIDADE_NEGOCIO
FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);
// ------------------------
LINK_TABLE:
//PEDIDOS:
LOAD Distinct
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO ) as %SK_RATEIO,
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & NULL()) as %SK_TRANSF,
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO) as %SK_PEDIDOS, //<<<<<<<<
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO ) as %SK_ORCAMENTO,
Date(Floor(DATA)) as DATA,
// NULL() AS %ID_CONTA_BANCARIA,
%ID_EMPRESA,
%ID_CONTA_GERENCIAL,
%ID_UNIDADE_NEGOCIO
FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);
Atenciosamente.
Vinicius Mariano de Lima
Bom dia Marcos,
O relacionamento entre as tabelas de pedidos e calendário está com problema.
Terá que truncar a DATA e formatar para apresentar da mesma forma.
Verifique a imagem abaixo:
Você terá que converter o valor da Data no pedido e linktable para apresentar de forma correta usando Date(Floor(DATA)):
Segue sugestão (não foi testado):
// ------------------------
PEDIDOS:
LOAD Distinct
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO) as %SK_PEDIDOS,
ID_PEDIDO,
CD_PEDIDO,
ID_PARCELA_PEDIDO_ORCAMENTO,
//NULL() AS ID_CONTA_BANCARIA,
//%ID_EMPRESA,
STATUS_PED,
%ID_ALMOXARIFADO,
%ID_FORNECEDOR,
VL_DA_PARCELA_PED,
VL_DA_PARCELA_ORC_PED,
//Date(DATA, 'DD/MM/YYYY') AS DATA,
DT_DA_PARCELA_PED,
MES_VENC,
ANO_VENC,
If(day(DATA) < 13, 'De 01 a 12',
If(day(DATA) < 18, 'De 13 a 17',
If(day(DATA) < 23, 'De 18 a 22',
If(day(DATA) < 28, 'De 23 a 27', 'De 28 a 30/31')))) as [Vencimentos_pedidos]
//%ID_CONTA_GERENCIAL,
//%ID_UNIDADE_NEGOCIO
FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);
// ------------------------
LINK_TABLE:
//PEDIDOS:
LOAD Distinct
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO ) as %SK_RATEIO,
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & NULL()) as %SK_TRANSF,
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO) as %SK_PEDIDOS, //<<<<<<<<
AutoNumber(NUM(Date(Floor(DATA))) & '|' & NULL() & '|' & %ID_EMPRESA & '|' & %ID_CONTA_GERENCIAL & '|' & %ID_UNIDADE_NEGOCIO ) as %SK_ORCAMENTO,
Date(Floor(DATA)) as DATA,
// NULL() AS %ID_CONTA_BANCARIA,
%ID_EMPRESA,
%ID_CONTA_GERENCIAL,
%ID_UNIDADE_NEGOCIO
FROM Fonte\Pedidos_orcamento_pagamento\PEDIDOS.qvd (qvd);
Atenciosamente.
Vinicius Mariano de Lima
Obrigado pela ajuda Vinicius, o problema era realmente este.
Fica na paz.
Att, Marcos.