Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
luizbezerra
Contributor

Condição após 5º dia útil do mês

Srs, Bom dia a todos e um ótimo 2018 !

Tenho uma extração que preciso tratar da seguinte forma:

Let DtInicioMes  = Date(MonthStart(Today(1)),'YYYY-MM-DD');

Let DtFimMes       Date(MonthEnd  (Today(1)),'YYYY-MM-DD');

Sempre busco informação do mês cheio , porém eu devo trazer informações do mês cheio apenas depois do 5º dia últil, pois pode ter informação não processada ainda.

Exemplo : dia 28 e 29 e 30 de Dezembro/2018, eu executei o QVW, porém na base ainda não tinha informação desses dias , como executo diariamente não terei a informação deles naquele mês, apenas nos proximos dias do mês seguinte.

como o fechamento tenho a data limite de até o 5º dia útil , preciso tratar, para executar o  inicio / fim do mês apenas depois do quinto dia ultil. na clausula where :

where redata between '$(DtInicioMes)' and '$(DtFimMes)'

Obrigado

Luiz Fernando Bezerra
Tags (1)
1 Solution

Accepted Solutions
luizbezerra
Contributor

Re: Condição  após 5º dia útil do mês

Eduardo !

Neste caso não foi o tratamento no caso que você passou é para o qvd.

Mas eu resolvi da seguinte forma.

Adicionei 5 dias , na data final, assim sempre vou ter os dias necessários para ter o mês completo .

Let DtFimMes   =    Date(MonthEnd  (Today(1))+5,'YYYY-MM-DD');


Muito obrigado pela ajuda e rapidez nas respostas.


Tenha uma boa semana.

Luiz Fernando Bezerra
9 Replies
eduardo_dimperi
Valued Contributor II

Re: Condição após 5º dia útil do mês

Oi Luiz, tudo bem?

Para eu entender melhor voce quer trazer por exemplo do mes de dezembro 2017 (no exemplo esta 2018, por isso minha duvida), então no caso voce pegaria toda a informação do 5 dia util de Dez/17 ate o ultimo dia dele (util ou nao), ou seja, 07/12/2017 - 31/12/2017. Correto?

luizbezerra
Contributor

Re: Condição após 5º dia útil do mês

Eduardo, Tudo bem sim e com você ?

O que ocorre é que no final do mês alguns dias os dados ainda não estão na tabela devido o fechamento ou seja hoje estou verificando inicio do mês atual e final do mês atual.

Sendo que dados dos dias 28,29,30,31 do mês 12/2017 estão sendo gravados na tabela ainda.

Na realizado só posso executar o inicio/fim do mês atual após o 5º dia útil de casa mês.

Luiz Fernando Bezerra
eduardo_dimperi
Valued Contributor II

Re: Condição após 5º dia útil do mês

Essa parte do mês atual que eu não entendi, pelo exemplo que tu passou você só pode processar o mês anterior apos o 5 dia útil do mês atual. No caso você vai processar o mês de dezembro(anterior) só apos o 5 dia útil de janeiro (atual). É isso?

luizbezerra
Contributor

Re: Condição após 5º dia útil do mês

Eduardo,  talvez eu não estou sendo claro, desculpe !

Olha só :

where redata between '2017-12-01' and '2017-12-31'


Todo mês, após o fechamento(5º dia útil), substituir as datas para o inicio/fim do mês corrente


Neste caso fica assim : '2018-01-01' and '2018-01-31', após o 5º dia útil).


Luiz Fernando Bezerra
eduardo_dimperi
Valued Contributor II

Re: Condição após 5º dia útil do mês

Bom de qualquer forma, tenho duas soluções pra ti e voce ve quais fica melhor pra sua situação.

A primeira voce cria um excel com o 5 dia util de cada mes e depois só le essa tabela pra ter seu DtFimMes.

A segunda é um If encadeado.

Let vData=Weekday(StartMonth(Today()))

If (vData=Seg,DtFimMes=vData+4,

If (vData=Dom,DtFimMes=vData+5,

DtFimMes=VData+6))

eduardo_dimperi
Valued Contributor II

Re: Condição após 5º dia útil do mês

Ah, entendi. Entao voce apenas quer saber se já é o 5 dia util pra poder fazer a alteração.

Let vData=Weekday(StartMonth(Today()))

//******** Verifica o 5 dia Util******************

If (vData=Seg,vDataCheck=vData+4,

If (vData=Dom,vDataCheck=vData+5,

vDataCheck=VData+6))

//************************************************

If (Today()=vDataCheck) Then

Let DtInicioMes  = Date(MonthStart(Today(1)),'YYYY-MM-DD');

Let DtFimMes       Date(MonthEnd  (Today(1)),'YYYY-MM-DD');

EndIf

Acho que isso deve resolver

luizbezerra
Contributor

Re: Condição  após 5º dia útil do mês

Eduardo, Bom dia !

Desculpe não responder, mas fiquei sem acesso a internet aqui no escritório.

Esta rotina estou executando diretamente no ETL , para gerar o QVD .

Sorry, pensei que estivesse mencionado.

Atenciosamente.

Luiz Fernando Bezerra
eduardo_dimperi
Valued Contributor II

Re: Condição  após 5º dia útil do mês

Oi Luiz, tranquilo, mas esse código que eu passei não funciona?

luizbezerra
Contributor

Re: Condição  após 5º dia útil do mês

Eduardo !

Neste caso não foi o tratamento no caso que você passou é para o qvd.

Mas eu resolvi da seguinte forma.

Adicionei 5 dias , na data final, assim sempre vou ter os dias necessários para ter o mês completo .

Let DtFimMes   =    Date(MonthEnd  (Today(1))+5,'YYYY-MM-DD');


Muito obrigado pela ajuda e rapidez nas respostas.


Tenha uma boa semana.

Luiz Fernando Bezerra