Skip to main content
Announcements
Join us at Qlik Connect for 3 magical days of learning, networking,and inspiration! REGISTER TODAY and save!
cancel
Showing results for 
Search instead for 
Did you mean: 
Anonymous
Not applicable

Como criar uma tabela Mês apenas com Dias uteís


Amigos

Poderiam me auxiliar necessito criar uma tabela mês apenas com os dia utéis extraíndo finais de semana e feriados e possivél ???

Como fazer, poderiam me auxiliar.

Agradeço aos amigos

4 Replies
Clever_Anjos
Employee
Employee

+- assim

Feriados:

LOAD * INLINE [

    F1

    1/1/2015

    25/12/2015

];

LOAD

  Data

WHERE WeekDay(Data) < 5 and not Exists(F1,Data);

LOAD

  Date(Recno() + $(DataInicio) - 1)  as Data

AUTOGENERATE (Today() - $(DataInicio));

jonas_rezende
Specialist
Specialist

Foi aproveitada a solução do cleveranjos‌, assim o ano gera diferente de 1900; além de criar uma variável para quantidade de dias que deseja gerar.

Sugiro utilizar uma tabela de feriados ou criar, devido haver feriado municipal/estadual e, outros que mudam a cada ano. Ex.: sexta-feira da paixão.

DataInicio = '01/01/2015'; // Gerar a partir desta data;

SET v_qtdDias = 364; // Limite de dias

LOAD * INLINE [

    F1

    1/1/2015

    04/06/2015  

    25/12/2015

];

LOAD

  Data

WHERE WeekDay(Data) < 5 and not Exists(F1,Data);

LOAD

Date(Floor(Recno() + '$(DataInicio)'))  as Data

AUTOGENERATE ('$(v_qtdDias)');

Espero ter ajudado!

Clever_Anjos
Employee
Employee

Já conseguiu solucionar? Se sim, marque uma das respostas como "Correta" e nos ajude a manter os foruns organizados

Not applicable
Author

Bom dia, tudo bem?

Segue minha solução para criar calendário com os dias úteis, caso queira desconsiderar algum feriado basta apenas colocar como paramento da função NetWorkDays()

let vDataMin = Today()-31;//Variavel auxiliar de data minima

let vDataMax = num(Today());//Variavel auxiliar de data maxima

CalendarioTemporario:

Load

    date($(vDataMin)+(RowNo()-1)) as DataTemp //-1 para começar o incremento do zero

AutoGenerate ($(vDataMax)-$(vDataMin))+1; //+1 para incluir o limite da data Max

Calendario:

Load

    DataTemp as Data, //Data Completa

    year(DataTemp) as Ano,

    month(DataTemp) as Mês,

    day(DataTemp) as Dia,

    WeekDay(DataTemp) as DiaSemana //Nome do dia da semana

Resident CalendarioTemporario

where NetWorkDays(DataTemp,DataTemp) >=1; //Função que traz a quantidade de dias úteis entre as datas caso seja maior que 1 trazer o dia

Drop Table CalendarioTemporario;