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.
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