Forum Discussion
Reg: DMT
hola Equipo,
Necesitamos una solución para el DMT
Ejemplo
si selecciono cualquier fecha ex:(18/08/2021) de slicer debe considerar el inicio de la semana que es (15/08/2021-domingo), por lo que debe volver (15/08/2021-18/08/2021).
amablemente ayúdame en esto
gracias
Gladis
No @gladies123
Creo que necesita crear una tabla de fechas y agregar una columna weeknum personalizada y una columna de año personalizada en ella por dax. Si usa la función weeknum directamente, obtendrá un número de semana incorrecto al final del año anterior y al comienzo del año siguiente.
Por ejemplo:
En mi muestra dejé que la semana comenzara el domingo.
2020/12/31,2021/01/01,2021/01/02 están en el mismo weeknum, pero la función weeknum te dará 53 en 2020 y 1 en 2021. Es un resultado equivocado.
En primer lugar, cree una tabla de calendario por dax.
Date = ADDCOLUMNS ( CALENDAR ( DATE ( 2019, 01, 01 ), DATE ( 2021, 12, 31 ) ), "Year", YEAR ( [Date] ), "Month", MONTH ( [Date] ), "WeekNum", WEEKNUM ( [Date], 1 ), "WeekDay", WEEKDAY ( [Date], 1 ), "MonthName", FORMAT ( [Date], "MMMM" ), "DayName", FORMAT ( [Date], "DDDD" ) )Agregue columnas calculadas para obtener el número de semana y el año correctos.
ISO 8601 WeekNum = VAR _COUNT0 = CALCULATE ( COUNTROWS ( 'Date' ), FILTER ( 'Date', 'Date'[Year] = EARLIER ( 'Date'[Year] ) && 'Date'[WeekNum] - 1 = 0 ) ) VAR _BASENUM1 = IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] ) VAR _ISO_8601_WeekNum = IF ( WEEKDAY ( DATE ( 'Date'[Year] - 1, 01, 01 ) ) <> 1 && 'Date'[Year] = 'Date'[Year] && _BASENUM1 = 0, WEEKNUM ( DATE ( MIN ( 'Date'[Year] ), 12, 31 ), 1 ) - 1, _BASENUM1 ) RETURN _ISO_8601_WeekNumISO WeekYear = VAR _COUNT0 = CALCULATE ( COUNTROWS ( 'Date' ), FILTER ( 'Date', 'Date'[Year] = EARLIER ( 'Date'[Year] ) && 'Date'[WeekNum] - 1 = 0 ) ) VAR _BASENUM1 = IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] ) RETURN IF(_BASENUM1 = 0,'Date'[Year] -1,'Date'[Year])Cree una relación entre esta tabla y la tabla de datos.
A continuación, cree una medida para calcular el DMT.
WTD = VAR _SELECTISOYEAR = SELECTEDVALUE ( 'Date'[ISO WeekYear] ) VAR _SELECTISOWEEKNUM = SELECTEDVALUE ( 'Date'[ISO 8601 WeekNum] ) RETURN CALCULATE ( SUM ( Data[Value] ), FILTER ( ALL ( 'Date' ), 'Date'[ISO 8601 WeekNum] = _SELECTISOWEEKNUM && 'Date'[ISO WeekYear] = _SELECTISOYEAR ) )El resultado es la suma entre 2021/08/15 - 2021/08/21.
Saludos
Rico ZhouSi esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
2 Replies
- Syndicate_AdminAdministrator
@gladies123 , consulte si mi blog puede ayudar
Power BI: semana tras semana y DMT
https://medium.com/@amitchandak.1978/power-bi-wtd-questions-time-intelligence-4-5-98c30fab69d3
https://community.powerbi.com/t5/Community-Blog/Week-Is-Not-So-Weak-WTD-Last-WTD-and-This-Week-vs-Last-Week/ba-p/1051123
https://www.youtube.com/watch?v=pnAesWxYgJ8Usar 1 en el día de la semana y el número de la semana
WEEKDAY([Fecha],1)
- Syndicate_AdminAdministrator
No @gladies123
Creo que necesita crear una tabla de fechas y agregar una columna weeknum personalizada y una columna de año personalizada en ella por dax. Si usa la función weeknum directamente, obtendrá un número de semana incorrecto al final del año anterior y al comienzo del año siguiente.
Por ejemplo:
En mi muestra dejé que la semana comenzara el domingo.
2020/12/31,2021/01/01,2021/01/02 están en el mismo weeknum, pero la función weeknum te dará 53 en 2020 y 1 en 2021. Es un resultado equivocado.
En primer lugar, cree una tabla de calendario por dax.
Date = ADDCOLUMNS ( CALENDAR ( DATE ( 2019, 01, 01 ), DATE ( 2021, 12, 31 ) ), "Year", YEAR ( [Date] ), "Month", MONTH ( [Date] ), "WeekNum", WEEKNUM ( [Date], 1 ), "WeekDay", WEEKDAY ( [Date], 1 ), "MonthName", FORMAT ( [Date], "MMMM" ), "DayName", FORMAT ( [Date], "DDDD" ) )Agregue columnas calculadas para obtener el número de semana y el año correctos.
ISO 8601 WeekNum = VAR _COUNT0 = CALCULATE ( COUNTROWS ( 'Date' ), FILTER ( 'Date', 'Date'[Year] = EARLIER ( 'Date'[Year] ) && 'Date'[WeekNum] - 1 = 0 ) ) VAR _BASENUM1 = IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] ) VAR _ISO_8601_WeekNum = IF ( WEEKDAY ( DATE ( 'Date'[Year] - 1, 01, 01 ) ) <> 1 && 'Date'[Year] = 'Date'[Year] && _BASENUM1 = 0, WEEKNUM ( DATE ( MIN ( 'Date'[Year] ), 12, 31 ), 1 ) - 1, _BASENUM1 ) RETURN _ISO_8601_WeekNumISO WeekYear = VAR _COUNT0 = CALCULATE ( COUNTROWS ( 'Date' ), FILTER ( 'Date', 'Date'[Year] = EARLIER ( 'Date'[Year] ) && 'Date'[WeekNum] - 1 = 0 ) ) VAR _BASENUM1 = IF ( _COUNT0 < 7, 'Date'[WeekNum] - 1, 'Date'[WeekNum] ) RETURN IF(_BASENUM1 = 0,'Date'[Year] -1,'Date'[Year])Cree una relación entre esta tabla y la tabla de datos.
A continuación, cree una medida para calcular el DMT.
WTD = VAR _SELECTISOYEAR = SELECTEDVALUE ( 'Date'[ISO WeekYear] ) VAR _SELECTISOWEEKNUM = SELECTEDVALUE ( 'Date'[ISO 8601 WeekNum] ) RETURN CALCULATE ( SUM ( Data[Value] ), FILTER ( ALL ( 'Date' ), 'Date'[ISO 8601 WeekNum] = _SELECTISOWEEKNUM && 'Date'[ISO WeekYear] = _SELECTISOYEAR ) )El resultado es la suma entre 2021/08/15 - 2021/08/21.
Saludos
Rico ZhouSi esta publicación ayuda, entonces por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.