Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
danielteixeira1
New Contributor

Contador de Dias Úteis passados

Boa tarde, pessoal.

Possuo uma tabela de calendário já criada no meu banco de dados. Esta tabela possui configuração de feriados, ou seja, um dia de semana pode não ser considerado como dia útil, dependendo da configuração que eu fizer.

Tomando como exemplo o mês de Dezembro/2017, temos 20 dias úteis, pois além dos fins de semana, temos o dia 25 como feriado.

A configuração da tabela seria similar à seguinte:

DATA

DIA_SEMANA

DIA_UTIL

01/12/2017

Sexta

Sim

02/12/2017

Sabado

Nao

03/12/2017

Domingo

Nao

04/12/2017

Segunda

Sim

05/12/2017

Terça

Sim

06/12/2017

Quarta

Sim

07/12/2017

Quinta

Sim

08/12/2017

Sexta

Sim

09/12/2017

Sabado

Nao

10/12/2017

Domingo

Nao

11/12/2017

Segunda

Sim

12/12/2017

Terça

Sim

13/12/2017

Quarta

Sim

14/12/2017

Quinta

Sim

15/12/2017

Sexta

Sim

16/12/2017

Sabado

Nao

17/12/2017

Domingo

Nao

18/12/2017

Segunda

Sim

19/12/2017

Terça

Sim

20/12/2017

Quarta

Sim

21/12/2017

Quinta

Sim

22/12/2017

Sexta

Sim

23/12/2017

Sabado

Nao

24/12/2017

Domingo

Nao

25/12/2017

Segunda

Nao

26/12/2017

Terça

Sim

27/12/2017

Quarta

Sim

28/12/2017

Quinta

Sim

29/12/2017

Sexta

Sim

30/12/2017

Sabado

Nao

31/12/2017

Domingo

Nao

Já tentei utilizar a função NetWorkDays, que basicamente ignora essa tabela de calendário. O problema desta função é que ela está considerando o dia 25 como dia útil, por ser uma segunda feira.

Preciso fazer um contador de dias úteis passados dentro desse mês. Por exemplo, hoje, 27/12/2017, temos 17 dias úteis passados.

Alguém pode me ajudar?

Obrigado!

4 Replies

Re: Contador de Dias Úteis passados

Daniel, uma forma simples de utilizar a NetWorkDays e passar os feriados de seu calendário, é armazenar os feriados em uma variável. Mais ou menos assim:

Feriados_Tmp:

LOAD

      DATA

RESIDENT SUATABELACALENDARIO

WHERE DIA_UTIL = 'Sim'

//Concatenando os feriados com virgula

Feriados:

LOAD

CONCAT(chr(39) & DATA & chr(39), ',') as TodosFeriados

RESIDENT Feriados_Tmp;

DROP TABLE Feriados_Tmp;

//Colocando os feriados dentro de uma variável

LET vFeriados = peek('TodosFeriados',0, 'Feriados');

Depois disso, basta usar a função NetWorkDays com essa variável, no parâmetro de feriados, desta forma:

NetWorkDays(DataInicio, DataTermino, '$(vFeriados)')

danielteixeira1
New Contributor

Re: Contador de Dias Úteis passados

Bom dia, Yuri!

Obrigado pela resposta!

Eu coloco este código que você forneceu na janela de criação de variáveis?

Quando fui testar o seu código, apareceu o seguinte erro:

"Garbage after expression: 'DATA'"

Sabe o que pode ser?

Estou começando a desenvolver coisas mais complexas no QLIK Sense então, por favor, me perdoe se as perguntas parecerem um tanto "for dummies".

Mais uma vez, obrigado!

Abraço!

Daniel

Re: Contador de Dias Úteis passados

Essa variável precisa ser criada no script, mas meu código foi apenas um exemplo, será necessário adaptar ao seus dados.

Se tiver dificuldades, disponibilize seu código aqui

cristianor
New Contributor II

Re: Contador de Dias Úteis passados

Boa Tarde , Daniel.

No meu modelo de negocio tive que fazer a mesma coisa para criar os dias de feriados e atípicos e resolvi diretamente na expressão da seguinte maneira:

1 - Criei uma variável na visão geral das variáveis chamada vHolidays fiz a inserção de todos os dias que não queria considerar desta maneira '01/01/2016','08/02/2016','09/02/2016' mesmo o primeiro valor ficando normal e os outros tracejados ele entende.


2 - Criei um calendário auxiliar por tipo de dia constando no meu caso a empresa a referencia de chave mês/ano os tipos de dias e as quantidades de cada por exemplo fevereiro de 2016 foram 19 uteis / 4 sábado / 4 domingo / 2 feriados e total 29 , liguei com a tabela de quantidades que queria realizar a media dos dias.


3 - O set analise abaixo

sum({$<TP_DIA={'Dia_Util'},DDate=E({$< DDate={$(vHolidays)}>})>}[pax])/sum(TPUTIL) ou no seu caso o count.

Esta solução funciona perfeitamente e atende uma das principais demandas de indicadores da nossa empresa , caso tenha alguma duvida ou queira entrar em contato fico a disposição.

Att;