Qlik Community

Qlik Brasil

Welcome to the group for Brazil users. .All discussions will be in Portuguese.

Highlighted
Hermann
Visitor II

Primeiro dia útil do Mês

Olá pessoal, bom dia!

Estou atrás de uma função ou de uma luz, para retornar o primeiro dia útil do mês.

Por exemplo o mês de Junho o primeiro dia útil é 03/06/2019, o do mês de Julho é 01/07/2019. Gostaria de trazer esse valor.

Alguém poderia me auxiliar? Desde já meu muito obrigado!

Tags (1)
1 Solution

Accepted Solutions
Hermann
Visitor II

Re: Primeiro dia útil do Mês

Pessoal, acredito que consegui resolver meu problema... pelo menos está retornando o que eu quero... rsrsrs

Criei uma função dentro do Dash, pois não queria criar a mesma no Load Editor... segue o código da função:

 

if(weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01')<> 'sáb' AND weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01') <>'dom',
Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'),
if(weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01') = 'sáb',
Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'+2),Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'+1)
)
)

Obs.: o campo vCompAtual, é uma outra função que tenho, que me retorna o ano_mes selecionado pelo usuário no Dash, então a partir disso quero saber qual o primeiro dia útil do mês selecionado pelo usuário, para realizar os devidos cálculos de contagem de dias de vencimento até o primeiro dia do mês.

ainda não fiz o link com uma tabela de feriados, mas se não levar em consideração, ele está trazendo o primeiro dia útil do mês.

 

Abraço!

2 Replies
Hermann
Visitor II

Re: Primeiro dia útil do Mês

Pessoal, acredito que consegui resolver meu problema... pelo menos está retornando o que eu quero... rsrsrs

Criei uma função dentro do Dash, pois não queria criar a mesma no Load Editor... segue o código da função:

 

if(weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01')<> 'sáb' AND weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01') <>'dom',
Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'),
if(weekday(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01') = 'sáb',
Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'+2),Date(mid(vCompAtual,1,4)&'-'&mid(vCompAtual,5,2)&'-01'+1)
)
)

Obs.: o campo vCompAtual, é uma outra função que tenho, que me retorna o ano_mes selecionado pelo usuário no Dash, então a partir disso quero saber qual o primeiro dia útil do mês selecionado pelo usuário, para realizar os devidos cálculos de contagem de dias de vencimento até o primeiro dia do mês.

ainda não fiz o link com uma tabela de feriados, mas se não levar em consideração, ele está trazendo o primeiro dia útil do mês.

 

Abraço!

diogoduarte
New Contributor III

Re: Primeiro dia útil do Mês

Hermann, uma sugestão pra minimizar o seu custo de cálculo na aplicação.

Eu coloquei um flag no calendário informando se é dia útil ou não. 
Primeiro carrego uma suposta tabela de feriado e depois o calendário. No calendário faço a coluna WorkDay onde verifico se é final de semana ou feriado e marco como zero, senão, marco como 1.

Na aplicação faço a seguinte medida:
Date(Min({<WorkDay={1}>} Data))

Feriados:
Load
*
Inline [
Feriado
01/07/2019
20/07/2019
];

Load
Data,
If(WildMatch(Num(WeekDay(Data)),0,6) > 0 , 0 , If(Exists(Feriado,Data) , 0 , 1)) as WorkDay
Inline [
Data
01/07/2019
02/07/2019
03/07/2019
04/07/2019
05/07/2019
06/07/2019
07/07/2019
08/07/2019
09/07/2019
10/07/2019
11/07/2019
12/07/2019
13/07/2019
14/07/2019
15/07/2019
16/07/2019
17/07/2019
18/07/2019
19/07/2019
20/07/2019
21/07/2019
22/07/2019
23/07/2019
24/07/2019
25/07/2019
26/07/2019
27/07/2019
28/07/2019
29/07/2019
30/07/2019
31/07/2019
];


Drop Table Feriados;

 

Capturar.PNG