Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
Check it out now!Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more
Expertos,
Para uno de los gráficos que tengo que hacer, comparo un número total de un mes de un año con el mismo mes del año anterior. Por ejemplo, diciembre de 2022 y diciembre de 2021. Pero para compararlo en lugar de comparar todo el mes, solo me gustaría comparar los mismos días de la semana, es decir, el primer lunes de diciembre de 2022 con el lunes correspondiente de diciembre de 2021.
Un ejemplo de esto:
La comparación de diciembre de 2022 y 2021 comenzaría con el lunes 28 de noviembre de 2022 comparándose con el lunes 29 de noviembre de 2021.
Para comparar esto he pensado en hacer una tabla donde tengamos:
fecha - mismo día calendario año anterior - mismo día hábil mes anterior
Resultando en algo como esto:
Este último se busca para todo el año, de 2019 a 2023, en cada uno de sus meses.
Gracias por la ayuda!!
Ok, necesitamos agregar otra columna a la tabla de fechas:
DayOfMonth =
VAR _SelWeek = 'Date Table'[Week]
VAR _PrevYear = 'Date Table'[Year] - 1
VAR _DayOfWeek = 'Date Table'[DayOfWeek]
VAR _Day =
DAY ( 'Date Table'[Date] )
VAR _Calc =
CALCULATE (
MAX ( 'Date Table'[Date] ),
FILTER (
ALL ( 'Date Table' ),
'Date Table'[DayOfWeek] = _DayOfWeek
&& 'Date Table'[Week] = _SelWeek
&& 'Date Table'[Year] = _PrevYear
)
)
RETURN
IF ( ISBLANK ( _Calc ), BLANK (), _Day & "(" & DAY ( _Calc ) & ")" )
Cree la medida % (adáptese a cómo desea ver la varianza)
% vs Prev Year =
DIVIDE([Sum Sales], [Same Week Previous Year])
Cree una nueva medida para usar como filtro para mostrar solo 4 semanas completas:
FILTER 4 weeks =
VAR _MinMonday =
CALCULATE (
MIN ( 'Date Table'[Date] ),
FILTER ( ALLSELECTED ( 'Date Table' ), 'Date Table'[DayOfWeek] = 1 )
)
VAR _MaxSunday =
CALCULATE (
MAX ( 'Date Table'[Date] ),
FILTER ( ALLSELECTED ( 'Date Table' ), 'Date Table'[DayOfWeek] = 7 )
)
RETURN
IF (
AND (
MAX ( 'Date Table'[Date] ) >= _MinMonday,
MAX ( 'Date Table'[Date] ) <= _MaxSunday
),
1
)
Ahora construye el visual usando las medidas.
Para filtrar el objeto visual y ver solo 4 semanas completas, agregue la 'Tabla de fechas' [Fecha] archivada al panel de filtro para el objeto visual, seleccione TopN para el tipo de filtro, agregue la medida [FILTRO 4 semanas] y establezca el valor TopN en 1:
He adjuntado el archivo PBIX de ejemplo
¡Muchas gracias todo funciona a la perfección con estas medidas!
Pero, una pregunta, en caso de que quieras poner un filtro de fecha que en lugar de cuatro semanas empiece con lunes pero no el primer lunes del mes, por ejemplo en diciembre de 2021 el 1 es miércoles pero queremos que empiece a partir del 29 de noviembre (lunes). Y la fecha de finalización es el último día del mes seleccionado, en el caso del 31 de diciembre.
¿Cómo se haría esto con una medida?
No estoy seguro de lo que necesita mostrar en el visual, pero para obtener el valor para el mismo día de la misma semana en el año anterior, puede intentar:
Con esta tabla de fechas y datos de muestra:
Date TableTabla de fechas
Fact TableTabla de hechos
Same Week Previous Year =
VAR _SelWeek =
MAX ( 'Date Table'[Week] )
VAR _PrevYear =
MAX ( 'Date Table'[Year] ) - 1
VAR _DayOfWeek =
MAX ( 'Date Table'[DayOfWeek] )
RETURN
CALCULATE (
[Sum Sales],
FILTER (
ALL ( 'Date Table' ),
'Date Table'[DayOfWeek] = _DayOfWeek
&& 'Date Table'[Week] = _SelWeek
&& 'Date Table'[Year] = _PrevYear
)
)
Hola, gracias por tu respuesta!
Pero los años bisiestos no se tienen en cuenta, creo.
¿Lo has intentado?
La medida se fija en el mismo día de la semana de la misma semana (número) del año anterior (es decir, no se tienen en cuenta el mes y la fecha)
Hi, @PaulDBrown
Probé tu solución. Tenías razón, cuenta los años bisiestos.
Pero soy nuevo en esto, mi visualización final es un gráfico donde el eje X debe tener los días de un mes específico y solo comparar lunes con lunes, martes con martes, etc. de un año anterior.
Por esta razón creo que esta solución no es válida para mí, porque no sabría cómo poner esos datos en el eje x.
No sé si me explico muy bien...
¿Puedes publicar una representación de lo visual que buscas? Una maqueta de Excel por ejemplo, para ver cuál es el diseño...
Me gustaría algo como esto:
Sé dibujar el gráfico y los ejes Y.
Las columnas representan la división entre este año y el anterior (porcentaje), una de las líneas sería del año anterior y la otra de la actual (ejes Y derechos).
Gracias a su medida, sabría cómo hacer que tomen los mismos días de la semana, pero no sabría cómo pintar el eje X, por lo que sabría qué día es este año o el anterior.
Por ejemplo, el eje X es: "día actual (anterior)"
Además, en la página tengo un selector de año y mes, por lo que solo tengo del 1 al 31, pero como podéis ver en el sorteo necesito obtener desde el primer lunes hasta el último domingo del mes, para comparar exactamente 4 semanas.
@esarel , el mismo día de la semana tiene 364 días de retraso
Pruebe una medida como
semana Año detrás de las ventas = CALCULATE(SUM(Sales[Sales Amount]),dateadd('Date'[Date],-364,DAY))
Hola, @amitchandak
Con esta medida no se tienen en cuenta los años bisiestos.
Entonces, esta solución no funcionaría para mí ...