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

Status através de Datas

Boa Tarde,

Preciso imensamente da ajuda de vocês.

Estou trabalhando com alguns dados de contratos, e existem duas tabelas que são ligadas pelo número do contrato.

Em cada tabela existe um data do fim do contrato.

DATA_FIM_VIGENCIA e ADITIVO_DATA_FIM_VIGENCIA.

Através dessas datas, criei um STATUS para o contrato, como um contrato pode ter mais de um aditvo, tendo assim, mais de uma data, preciso pegar a última data.

É preciso pegar a DATA_FIM_VIGENCIA caso o campo ADITIVO_DATA_FIM_VIGENCIA. esteja vazio, caso contrário, pego a última data do ADITIVO_DATA_FIM_VIGENCIA..


Seis Meses seria a data daqui a seis meses e três meses a data daqui a três meses.

if(

COUNT([ADITIVO_DATA_FIM_VIGENCIA] > 0),

If(MAX([ADITIVO_DATA_FIM_VIGENCIA]) >= [SeisMeses], 'Acima de 180 dias',

If(

MAX([ADITIVO_DATA_FIM_VIGENCIA]) <= TresMeses and MAX([ADITIVO_DATA_FIM_VIGENCIA]) > Today() , 'Abaixo de 90 dias',

If(MAX([ADITIVO_DATA_FIM_VIGENCIA]) < [SeisMeses] and MAX([ADITIVO_DATA_FIM_VIGENCIA])  > TresMeses , 'De 91 a 180 dias',

If(MAX([ADITIVO_DATA_FIM_VIGENCIA])<= Today(),'Encerrados'

)))),

If(MAX([DATA_FIM_VIGENCIA]) >= [SeisMeses], 'Acima de 180 dias',

If(

MAX([DATA_FIM_VIGENCIA]) <= TresMeses and MAX([DATA_FIM_VIGENCIA])> Today() , 'Abaixo de 90 dias',

If(MAX([DATA_FIM_VIGENCIA]) < [SeisMeses] and MAX([DATA_FIM_VIGENCIA]) > TresMeses , 'De 91 a 180 dias',

If(MAX([DATA_FIM_VIGENCIA])<= Today(),'Encerrados'

))))).

Esse scrip funcionou certinho. O problema é que não consigo filtrar por ele.

Por exemplo, Precisava filtrar somente os contratos Acima de 180 dias, ou Encerrados, Etc.

Como posso realizar isso?

Precisa contar também cada um desses status.

Criei esse script abaixo como dimensão, mas não deu certo:

=pick(match(vStatus,'Acima de 180 dias','Abaixo de 90 dias','De 91 a 180 dias','Encerrados'),'Acima de 180 dias','Abaixo de 90 dias','De 91 a 180 dias','Encerrados').

Onde vStatus Seria esse primeiro scrip que descrevi.

Mas não deu certo.

Alguém, por gentileza, saberia me ajudar?

Obrigada!

5 Replies
viniciusmariano
Contributor II
Contributor II

Olá Victória,

Poderia disponibilizar um aplicativo com dados de exemplo (fictícios, embaralhados ou uma população pequena) para facilitar os testes para esse caso? É interessante também mostrar quais filtros gostaria de aplicar e uma tabela com as expressões de teste.

Obrigado.

Anonymous
Not applicable
Author

Olá Vinicius,

Abaixo alguns dados fictícios para exemplo:

      

VENCIMENTONº DO CONTRATODATA TÉRMINO DO CONTRATODATA_FIM_VIGENCIAADITIVO_DATA_FIM_VIGENCIA
Acima de 180 dias101/04/202301/04/2023 00:00-
Acima de 180 dias202/09/202202/09/2022 00:00-
Acima de 180 dias309/10/202109/10/2021 00:00-
Acima de 180 dias413/09/202113/09/2021 00:00-
Acima de 180 dias512/11/201912/11/2018 00:0012/11/2019 00:00
Acima de 180 dias630/09/201930/09/2019 00:00-
Acima de 180 dias724/09/201924/09/2019 00:00-
Acima de 180 dias816/08/201916/08/2019 00:00-
Acima de 180 dias922/07/201922/07/2019 00:0022/07/2019 00:00
Acima de 180 dias1029/05/201929/05/2019 00:00-
De 91 a 180 dias1117/03/201917/03/2019 00:00-
De 91 a 180 dias1221/02/201921/02/2019 00:00-
De 91 a 180 dias1318/02/201918/03/2018 00:0018/02/2019 00:00
Abaixo de 90 dias1428/12/201829/12/2015 00:0028/12/2018 00:00
Abaixo de 90 dias1511/12/201811/12/2018 00:0011/12/2018 00:00
Encerrados1602/10/201802/10/2018 00:00-
Encerrados1724/09/201825/09/2015 00:0024/09/2018 00:00
Encerrados1828/07/201828/07/2018 00:00-
Encerrados1918/03/201818/03/2018 00:0018/03/2018 00:00
Encerrados2028/12/201729/12/2015 00:0028/12/2017 00:00
Encerrados2112/11/201712/11/2013 00:0012/11/2017 00:00

O que eu queria era conseguir filtrar pela variável que eu criei VENCIMENTO.

Gostaria de ver apenas os contratos encerrados, ou os que estão com vencimento acima de 180 dias, etc.

Como criei o campo vencimento como uma medida, o qlik não me permite fazer esse tipo de filtro.

viniciusmariano
Contributor II
Contributor II

Olá Victória,

Neste caso, se existir somente um registro por contrato, você pode fazer essa expressão dentro da sua carga, no script de carregamento. Assim conseguirá fazer o filtro normalmente.

Pode substituir as variáveis por cálculos dentro do script.

Exemplo:

Load *,

    if(not ISNULL([ADITIVO_DATA_FIM_VIGENCIA]) ,

        If([ADITIVO_DATA_FIM_VIGENCIA] >= Today() + 180, 'Acima de 180 dias',

            If([ADITIVO_DATA_FIM_VIGENCIA] <= Today() + 180 and [ADITIVO_DATA_FIM_VIGENCIA] > Today() +90 , 'De 91 a 180 dias',

                If([ADITIVO_DATA_FIM_VIGENCIA] <= Today() + 90 and [ADITIVO_DATA_FIM_VIGENCIA] > Today() , 'Abaixo de 90 dias',

                    If([ADITIVO_DATA_FIM_VIGENCIA] <= Today(),'Encerrados')))),

    If([DATA_FIM_VIGENCIA] >= Today() + 180, 'Acima de 180 dias',

        If([DATA_FIM_VIGENCIA] <= Today() + 180 and [DATA_FIM_VIGENCIA] > Today() +90 , 'De 91 a 180 dias',

                If([DATA_FIM_VIGENCIA] <= Today() + 90 and [DATA_FIM_VIGENCIA] > Today() , 'Abaixo de 90 dias',

                    If([ADITIVO_DATA_FIM_VIGENCIA] <= Today(),'Encerrados'))))) as Vencimento

Resident SuaTabela;

Sugestão: O comando ALT pode melhorar a sua expressão.

Qualquer dúvida estou à disposição.

Att.

Vinícius

Anonymous
Not applicable
Author

Obrigada Vinicius!

viniciusmariano
Contributor II
Contributor II

Olá Victória,

Conseguiu resolver seu problema?

Se sim, favor marcar a resposta correta e indicar a pergunta como respondida.

Com isso estaremos ajudando a comunidade a gerenciar eficientemente o fórum.

Obrigado.