Do not input private or sensitive data. View Qlik Privacy & Cookie Policy.
Skip to main content

Announcements
Congratulations to the new Qlik Luminary and Partner Ambassador class! Meet them here
cancel
Showing results for 
Search instead for 
Did you mean: 
josh_ben86
Contributor III
Contributor III

Dias Úteis

Boa noite pessoal,

Como faço para "pegar" apenas os dias úteis do mês corrente, ou seja, até 10 de outubro?

Obrigado desde já.

Labels (5)
1 Solution

Accepted Solutions
Thiago_Justen_
MVP
MVP

Desculpa a falta de detalhamento na minha resposta...foi pelo celular e bem rápida mesmo.

O WeekDay < 5 indica (se nada foi alterado na seção main) que queremos apenas os dias úteis. Veja o help:

Capturar.PNG

Pode aproveitar teu MasterCalendar e fazer assim:

MasterCalendar:

Load

TempDate as [data_emissao],

    week(TempDate) As semana,

    Year(TempDate) As Ano,

    Month(TempDate) As Mês,

    Day(TempDate) As dia,

   (Year(TempDate)-1) * 12 + num(month(TempDate)) as PeriodoID,

ApplyMap('QuartersMap', Month(TempDate),Null()) as Quarter,

    MonthName(TempDate) as MesAno,

Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as semanaano,

    If(TempDate<=Today(),1,0) AS FlgRealizado,

    If(TempDate>=Today(),1,0) AS FlgProjetado,

    WeekDay(TempDate) as diasemana,

     If(WeekDay(TempDate)<5,'Sim','Não')  as DiaUtil,

    num(TempDate) as DataEmissao#

Resident TempCalendar;

Drop Table TempCalendar;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago

View solution in original post

12 Replies
josh_ben86
Contributor III
Contributor III
Author

pablolabbe

Vi em um outro post que um amigo estava com problemas parecidos e você informou que utiliza planilhas e insere informações também via script...poderia compartilhar conosco o passo a passo ou compartilhar a planilha e o script... estou com grande dificuldade em trazer dias úteis e feriados...

att,

Thiago_Justen_
MVP
MVP

Josh,

Pode criar no teu script uma flag para dias úteis (há diversas outras formas de fazer isso):

Sua_Tabela:

Load

     OutrosCampos,

     If(WeekDay(CAMPO_DATA)<5, 'Sim','Não') as DiaUtil

From SuaBase;

Daí na tela bastaria na sua medida aplicar o set analysis com o campo DiaUtil. Exemplo:

Sum({<DiaUtil={'Sim'},CampoData={">=$(=MonthStart(Today()))"}>}Valor)

Essa medida soma o campo Valor apenas nos dias úteis (DiaUtil={'Sim'}), para o mês corrente (CampoData={">=$(=MonthStart(Today()))"})

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
josh_ben86
Contributor III
Contributor III
Author

Olá Thiago,

Agradeço pela ajuda... vou implementar e verificar os resultados... poderia só me explicar o pq "<5"?

No caso estamos em outubro...dia 11... como faria para trazer apenas os dias úteis em relação a esses 11 dias? O projetado consegui fazer...

estou utilizando Master Calendar... continuo utilizando o MonthStart?

MasterCalendar:

Load

TempDate as [data_emissao],

    week(TempDate) As semana,

    Year(TempDate) As Ano,

    Month(TempDate) As Mês,

    Day(TempDate) As dia,

   (Year(TempDate)-1) * 12 + num(month(TempDate)) as PeriodoID,

ApplyMap('QuartersMap', Month(TempDate),Null()) as Quarter,

    MonthName(TempDate) as MesAno,

Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as semanaano,

    If(TempDate<=Today(),1,0) AS FlgRealizado, 

    If(TempDate>=Today(),1,0) AS FlgProjetado,

    WeekDay(TempDate) as diasemana,

    num(TempDate) as DataEmissao#

Resident TempCalendar;

Drop Table TempCalendar;

Obrigado desde já.

Thiago_Justen_
MVP
MVP

Desculpa a falta de detalhamento na minha resposta...foi pelo celular e bem rápida mesmo.

O WeekDay < 5 indica (se nada foi alterado na seção main) que queremos apenas os dias úteis. Veja o help:

Capturar.PNG

Pode aproveitar teu MasterCalendar e fazer assim:

MasterCalendar:

Load

TempDate as [data_emissao],

    week(TempDate) As semana,

    Year(TempDate) As Ano,

    Month(TempDate) As Mês,

    Day(TempDate) As dia,

   (Year(TempDate)-1) * 12 + num(month(TempDate)) as PeriodoID,

ApplyMap('QuartersMap', Month(TempDate),Null()) as Quarter,

    MonthName(TempDate) as MesAno,

Week(weekstart(TempDate)) & '-' & WeekYear(TempDate) as semanaano,

    If(TempDate<=Today(),1,0) AS FlgRealizado,

    If(TempDate>=Today(),1,0) AS FlgProjetado,

    WeekDay(TempDate) as diasemana,

     If(WeekDay(TempDate)<5,'Sim','Não')  as DiaUtil,

    num(TempDate) as DataEmissao#

Resident TempCalendar;

Drop Table TempCalendar;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
josh_ben86
Contributor III
Contributor III
Author

Thiago,

Muito obrigado pelo retorno... estou implementando e me deparei com algo engraçado... ao invés do qlik excluir os dias 6 e 7 de outubro que seria sábado e domingo, respectivamente, ele está tirando 5 e 6... sexta feira e sábado...saberia informar o pq?

Screenshot_1.png

Screenshot_2.png

mmaturana
Contributor III
Contributor III

Thiago bom dia.

Existe alguma forma de considerarmos os feriados também? Atualmente possuo uma tabela com todas as datas de feriados.

Obrigado

Thiago_Justen_
MVP
MVP

Imagino que na seção Main do seu script a variável FirstWeekDay esteja o problema...

Mas adapte a expressão do script para:

     If(WeekDay(TempDate,6)<5,'Sim','Não')  as DiaUtil,

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
Thiago_Justen_
MVP
MVP

Murilo,

Se você possui uma tabela com feriados aí fica mais fácil. Exemplo para o seu caso:

Feriados:

Mapping

Load

DataFeriado,

NomeFeriado

From SuaTabelaFeriados;

TabelaFato:

Load

OutrosCampos,

ApplyMap('Feriados',CampoData) as Feriado, //Aqui, se não for feriado o retorno é null

If(WeekDay(CampoData)<5 and IsNull(Peek(Feriado)), 'Sim','Não') as DiaUtil

From SuaTabelaFeriados;

Thiago Justen Teixeira Gonçalves
Farol BI
WhatsApp: 24 98152-1675
Skype: justen.thiago
chris3669
Contributor III
Contributor III

Oi Murilo

Pode adicionar os feriados que possui como um map antes do calculo do dia da semana

Primeiro realiza um mapping load da relação das datas que são feriados

MAP_FERIADOS:

Mapping Load

  dia, 'Não'

FROM [lib://seu_arquivo_com_os_feriados..];

Depois adiciona na formula uma busca dos casos que sua data esta na listagem anterior, caso contrario aplica a formula que o Thiago passou anteriormente

ApplyMap('MAP_FERIADOS', TempDate, If(WeekDay(TempDate,6)<5,'Sim','Não'))  as DiaUtil,