Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
luizbezerra
Partner - Creator
Partner - Creator

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
Labels (3)
1 Solution

Accepted Solutions
luizbezerra
Partner - Creator
Partner - Creator
Author

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

View solution in original post

9 Replies
eduardo_dimperio
Specialist II
Specialist II

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
Partner - Creator
Partner - Creator
Author

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_dimperio
Specialist II
Specialist II

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
Partner - Creator
Partner - Creator
Author

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_dimperio
Specialist II
Specialist II

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_dimperio
Specialist II
Specialist II

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
Partner - Creator
Partner - Creator
Author

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_dimperio
Specialist II
Specialist II

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

luizbezerra
Partner - Creator
Partner - Creator
Author

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