Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
joao_sp_campina
Contributor II

Max data por Unidade

Bom  dia Pessoal,

Preciso de uma ajuda com relação a ultima data de atualização de status de um formulário de vistoria. Preciso sempre considerar em minha tabela dinâmica a data mais atual de cada unidade vistoriada. Ou seja, sempre considerar a ultima data de cada unidade.

Exemplo:

Unidade         Status               Data de atualização

   100                Reprovada            02/05/2013

   200                Reprovada            02/05/2013

   300                Aprovada              02/05/2013

   100                Aprovada              20/05/2013

   400                Reprovada            20/05/2013

No exemplo acima, vocês poderão observar que a unidade 100 agora está aprovada  em 20/05/2013, considero sempre esta data como atualizada e não devo mais considerar a data de reprovação 02/05/2013. Porem a unidade 200 continua reprovada. No meu relatório deve aparecer assim:

Unidade            Status                   Data de atualização

100                  Aprovada                20/05/2013

200                  Reprovada              02/05/2014

300                  Aprovada                02/05/2014

400                  Reprovada              20/05/2014

Neste caso na minha ultima vistoria dia 20/05 devo considerar esta situação. Caso eu quiser mostrar só as Reprovadas, devo considerar apenas uma vez a unidade 100 em 20/05/2013 e não mais  pegar ela como Reprovada em 02/05. E a unidade 200 deve aparecer, pois ainda não foi aprovada.

Sempre devo considerar  a máxima data de cada unidade.

Já tentei resolver isto por agregação via expressão mas não funcionou.

Alguém tem uma idéia de como resolver isto de uma maneira mais fácil.

Obrigado pela atenção de todos

João Carlos Ferreira

Tags (1)
1 Solution

Accepted Solutions
bruno_montenegr
Contributor III

Re: Max data por Unidade

Oi, João.

Acho que o jeito mais fácil é você criar uma dimensão DATA_ULTIMA_VISTORIA no script e usá-la na tabela com a opção "Ocultar quando o valor for nulo" marcada. O script ficaria assim:

VISTORIA:

Load

     METRAGEM,

     METRAGEM_OUTROS,

     NUMERO_SALA,

     UNIDADE,

     EMPREENDIMENTO,

     STATUS_VISTORIA,

     DATA_GRAVAÇAO,

     DATA_MODIFICAÇAO,

     O_QUE_FOI_AVALIADO,

     CÔMODOS,

     ITENS,

     ITENS_COMODOS,

     ITENS_INFORMAÇOES

From VISTORIA.QVD (qvd);

Left Join (VISTORIA) Load

  UNIDADE,

  Date(Max(DATA_GRAVAÇAO)) as DATA_GRAVAÇAO,

  Date(Max(DATA_GRAVAÇAO)) as DATA_ULTIMA_VISTORIA

Resident VISTORIA

Group by UNIDADE;

Assim você não vai precisar usar AGGR nem Set Analysis com datas nas expressões. Anexo segue um QVW com a solução.

Bruno.

8 Replies
rogerioqv
Contributor II

Re: Max data por Unidade

Joao,

Creio que você terá que utilizar o comando Firstsortedvalue... envie-me um qvw com esses dados que vou tentar conseguir para vc aqui a lógica.

Abraços.

joao_sp_campina
Contributor II

Re: Re: Max data por Unidade

Bom dia Rogério,

Segue o qvw com a massa de dados.

João Carlos Ferreira.

rogerioqv
Contributor II

Re: Re: Max data por Unidade

João, podes enviar novamente, perdi o arquivo!!!

joao_sp_campina
Contributor II

Re: Re: Re: Max data por Unidade

Bom dia Rogério,

Segue o qvw com a massa de dados.

João Carlos Ferreira.

Segue anexo.

aderlanrm
Valued Contributor

Re: Max data por Unidade

Boa noite João Carlos, tudo bem?

Veja o anexo, deixei três colunas e as lista para você entender o comportamento da função AGGR, também pode ver na ajuda F1 mais detalhes da função.

A primeira data é a que está na memória, a segunda é que responde a pergunta aqui e a terceira responde o que está escrito no objeto texto do QVW.

Não esqueça de marcar a opção "Oculta quanto o valor for nulo" nessas dimensões com as formulas.

Espero que seja útil, abraço.

rogerioqv
Contributor II

Re: Max data por Unidade

Muito boa a rotina...

Abraços.

bruno_montenegr
Contributor III

Re: Max data por Unidade

Oi, João.

Acho que o jeito mais fácil é você criar uma dimensão DATA_ULTIMA_VISTORIA no script e usá-la na tabela com a opção "Ocultar quando o valor for nulo" marcada. O script ficaria assim:

VISTORIA:

Load

     METRAGEM,

     METRAGEM_OUTROS,

     NUMERO_SALA,

     UNIDADE,

     EMPREENDIMENTO,

     STATUS_VISTORIA,

     DATA_GRAVAÇAO,

     DATA_MODIFICAÇAO,

     O_QUE_FOI_AVALIADO,

     CÔMODOS,

     ITENS,

     ITENS_COMODOS,

     ITENS_INFORMAÇOES

From VISTORIA.QVD (qvd);

Left Join (VISTORIA) Load

  UNIDADE,

  Date(Max(DATA_GRAVAÇAO)) as DATA_GRAVAÇAO,

  Date(Max(DATA_GRAVAÇAO)) as DATA_ULTIMA_VISTORIA

Resident VISTORIA

Group by UNIDADE;

Assim você não vai precisar usar AGGR nem Set Analysis com datas nas expressões. Anexo segue um QVW com a solução.

Bruno.

joao_sp_campina
Contributor II

Re: Max data por Unidade

Bruno,

Desculpe a demora em responder. Consegui fazer usando esta mesma ideia que você passou.

Obrigado pela ajuda.

Abrs