Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Seleção de datas trazendo comportamentos estranhos

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.

1 Solution

Accepted Solutions
viniciusmariano
Contributor II
Contributor II

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

View solution in original post

2 Replies
viniciusmariano
Contributor II
Contributor II

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

Anonymous
Not applicable
Author

Obrigado pela ajuda Vinicius, o problema era realmente este.

Fica na paz.

Att, Marcos.