semana fiscal perteneciente a solo un mes

Un usuario Pregunto ✅

Silvajf

Hola a todos,

Tengo una tabla de calendario donde el año fiscal comienza el 1 de noviembre de cada año, por lo que para el año fiscal 2018, la semana fiscal W-1 va del 01/11/2018 al 7/11/2018 y así sucesivamente.

Sabiendo esto, es normal que una Semana Fiscal se comparta por dos meses (el final de un mes y el comienzo de otro). Como en el siguiente ejemplo, el W-14 se coloca tanto en enero como en febrero.

Calendario PBI.PNG

No quiero que esto suceda, me gustaría mantener un número de semana por debajo de un mes solamente. Entonces, en este ejemplo, el 01/02/2018 debería ser W-15 y no W-14.

¿Alguna idea? Te lo agradecería.

Muchas gracias,

José

Greg_Deckler

En respuesta a Greg_Deckler

OK, lo tengo.

Primero, un ligero ajuste al Switch 3, estaba devolviendo 1 para el primer día del mes cuando cambia, pero eso no fue del todo correcto, o creo que podría haber usado un <= en mi otra medida, de cualquier manera:

Switch 3 = 
VAR __week = [Week]
VAR __table = SUMMARIZE(FILTER(ALL('Calendar'),[Week]=__week),[Week],[Month],"__count",COUNT([Date]))
VAR __count = COUNTROWS(__table)
VAR __min = MINX(__table,[Month])
VAR __max = IF(__count>1,MAXX(FILTER(ALL('Calendar'),[Week]=__week && [Month]=__min),[Date]),BLANK())
RETURN
IF(ISBLANK(__max),BLANK(),IF([Date]=__max,1,BLANK()))

Luego, esta columna usa la columna Switch 3 para ajustar la semana de manera apropiada:

Expected FW = 
VAR __date = [Date]
VAR __adjustment = SUMX(FILTER(ALL('Calendar'),[Date]<__date),[Switch 3])
RETURN [Week]+__adjustment

Greg_Deckler

Probablemente sea una solución, pero probablemente tomaría tanto tiempo idearla como escribirlas manualmente.

Greg_Deckler

En respuesta a Greg_Deckler

He estado mirando esto en mi tiempo libre. Todavía funciona, pero aquí está la primera parte, que identifica qué semanas abarcan meses:

Switch = 
VAR __week = [Week]
VAR __table = SUMMARIZE(FILTER(ALL('Calendar'),[Week]=__week),[Week],[MonthName],"__count",COUNT([Date]))
RETURN IF(COUNTROWS(__table)>1,1,BLANK())

Greg_Deckler

En respuesta a Greg_Deckler

Y aquí hay uno un poco mejorado.

Switch 2 = 
VAR __week = [Week]
VAR __table = SUMMARIZE(FILTER(ALL('Calendar'),[Week]=__week),[Week],[MonthName],"__count",COUNT([Date]))
VAR __count = COUNTROWS(__table)
VAR __min = IF(__count>1,MINX(FILTER(ALL('Calendar'),[Week]=__week),[Date]),BLANK())
RETURN
IF(ISBLANK(__min),BLANK(),IF([Date]=__min,1,BLANK()))

Greg_Deckler

En respuesta a Greg_Deckler

OK, lo siento, probablemente este sea el que quieras usar:

Switch 3 = 
VAR __week = [Week]
VAR __table = SUMMARIZE(FILTER(ALL('Calendar'),[Week]=__week),[Week],[Month],"__count",COUNT([Date]))
VAR __count = COUNTROWS(__table)
VAR __max = MAXX(__table,[Month])
VAR __min = IF(__count>1,MINX(FILTER(ALL('Calendar'),[Week]=__week && [Month]=__max),[Date]),BLANK())
RETURN
IF(ISBLANK(__min),BLANK(),IF([Date]=__min,1,BLANK()))

Greg_Deckler

En respuesta a Greg_Deckler

OK, lo tengo.

Primero, un ligero ajuste al Switch 3, estaba devolviendo 1 para el primer día del mes cuando cambia, pero eso no fue del todo correcto, o creo que podría haber usado un <= en mi otra medida, de cualquier manera:

Switch 3 = 
VAR __week = [Week]
VAR __table = SUMMARIZE(FILTER(ALL('Calendar'),[Week]=__week),[Week],[Month],"__count",COUNT([Date]))
VAR __count = COUNTROWS(__table)
VAR __min = MINX(__table,[Month])
VAR __max = IF(__count>1,MAXX(FILTER(ALL('Calendar'),[Week]=__week && [Month]=__min),[Date]),BLANK())
RETURN
IF(ISBLANK(__max),BLANK(),IF([Date]=__max,1,BLANK()))

Luego, esta columna usa la columna Switch 3 para ajustar la semana de manera apropiada:

Expected FW = 
VAR __date = [Date]
VAR __adjustment = SUMX(FILTER(ALL('Calendar'),[Date]<__date),[Switch 3])
RETURN [Week]+__adjustment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *