Skip to main content
Announcements
Have questions about Qlik Connect? Join us live on April 10th, at 11 AM ET: SIGN UP NOW
cancel
Showing results for 
Search instead for 
Did you mean: 
roberto_ntws
Contributor II
Contributor II

Identificar a qual semana do mês determinada data pertence.

Bom dia.

Não estou conseguindo desenvolver uma forma de identificar a qual semana do mês, determinada data pertence. Por exemplo:

A data 04/08/2015 pertence a 1ª semana do mês de agosto;

A data 11/08/2015 pertence a 3ª semana do mês de agosto;

A data 18/08/2015 pertence a 3ª semana do mês de agosto;

A data 26/08/2015 pertence a 4ª semana do mês de agosto.

Estou com uma demanda onde é necessário eu fazer uma comparação do total de horas realizada na semana. Este total de horas deve atingir a uma meta dentro da semana, se não atingir, ela é considerada como hora ociosa. Minha aplicação deve ser capaz de identificar esta hora ociosa.

Alguém teria alguma sugestão para que eu possa atender a esta demanda?

Obrigado.


Abraços.

Labels (1)
1 Solution

Accepted Solutions
roberto_ntws
Contributor II
Contributor II
Author

Boa tarde senhores.

Consegui adequar minha demanda utilizando o seguinte comando no script:

Week(WeekStart(DataOperacao,0,6))-Week(WeekStart('$(vDataInicial)',0,6))+1 as Semana

onde $(vDataInicial) é a data inicial que utilizo para carga das informações do banco de dados. Desta forma, ele diminui o número da semana de acordo com a "DataOperacao" da data inicial, que será sempre a mesma.

Ex.:

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

+1 = Incremento, pois a primeira semana começará no "0"


1ª Semana

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

0+1 = 1 Semana


2ª Semana

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

1+1 = 2 Semana


3ª Semana

Week(WeekStart(DataOperacao,0,6)) = 32

Week(WeekStart('$(vDataInicial)',0,6)) = 30

2+1 = 3 Semana

4ª Semana

Week(WeekStart(DataOperacao,0,6)) = 33

Week(WeekStart('$(vDataInicial)',0,6)) = 30

3+1 = 4 Semana

Obrigado.


Atenciosamente.

Roberto Guilherme Gomes

View solution in original post

3 Replies
afurtado
Partner Ambassador/MVP
Partner Ambassador/MVP

Bom dia Roberto.

A semana do mes, sendo ela de 1 a 4 ou 5, dependendo do mes pode ser obtida com a linha no script abaixo

  1+ceil((Data-floor(weekend(monthstart(Data),0,-1)))/7) as Semana1,

furtado@farolbi.com.br
roberto_ntws
Contributor II
Contributor II
Author

Obrigado Alessandro.

Sua resposta me abriu a mente e me ajudou muito. Mas pensei em outra situação, se ao invés de eu pegar o mês cheio (01/08 a 31/08) eu tivesse que pegar o período entre 26/07 a 22/08 para identificar o mês de Agosto?

Se eu pegar o mês cheio, ficarei impossibilitado de fazer a comparação com a meta semanal, sendo que o mês pode começar na metade de uma semana e terminar na segunda-feira de outra. Alterando o período de coleta de informações, eu poderia comparar mensalmente e ter o número exato de semanas.

Como você faria para definir os números de semanas entre 26/07 a 22/08?

Obrigado mais uma vez.

Abraços.

roberto_ntws
Contributor II
Contributor II
Author

Boa tarde senhores.

Consegui adequar minha demanda utilizando o seguinte comando no script:

Week(WeekStart(DataOperacao,0,6))-Week(WeekStart('$(vDataInicial)',0,6))+1 as Semana

onde $(vDataInicial) é a data inicial que utilizo para carga das informações do banco de dados. Desta forma, ele diminui o número da semana de acordo com a "DataOperacao" da data inicial, que será sempre a mesma.

Ex.:

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

+1 = Incremento, pois a primeira semana começará no "0"


1ª Semana

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

0+1 = 1 Semana


2ª Semana

Week(WeekStart(DataOperacao,0,6)) = 30

Week(WeekStart('$(vDataInicial)',0,6)) = 30

1+1 = 2 Semana


3ª Semana

Week(WeekStart(DataOperacao,0,6)) = 32

Week(WeekStart('$(vDataInicial)',0,6)) = 30

2+1 = 3 Semana

4ª Semana

Week(WeekStart(DataOperacao,0,6)) = 33

Week(WeekStart('$(vDataInicial)',0,6)) = 30

3+1 = 4 Semana

Obrigado.


Atenciosamente.

Roberto Guilherme Gomes