Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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:
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! |
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)')
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
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
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;