Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers!
Enter the sweepstakes now!Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.
Hola
Estoy tratando de construir un gráfico y estoy luchando para descubrir qué medidas no están funcionando.
Tengo 3 medidas: RunningTotalCurrentMonthRevenue, RunningTotalCurrentMonthRevenue2024, MonthlyForecast.
Me gustaría hacer un gráfico con el eje x como días del mes actual y los valores y como las 3 medidas. A continuación se muestra el código DAX para cada medida y una imagen del gráfico resultante. No puedo hacer que las medidas que no sean "RunningTotalCurrentMonthRevenue" se acumulen correctamente a lo largo del mes y, en su lugar, solo obtengo una línea plana.
Solved! Go to Solution.
Hola @SM_SHED ,
El problema es el siguiente: su RunningTotalCurrentMonthRevenue2024 y MonthlyForecast en realidad no se están "acumulando" día a día. En su lugar, suman los registros elegibles de todo el mes una y otra vez, lo que lleva a una línea plana. Básicamente, todos los días, mostraban el valor mensual completo en lugar de acumularse progresivamente. No es de extrañar que se quedaran allí como un pez aturdido.
Para solucionarlo, las medidas deben acumularse correctamente a lo largo de los días. En lugar de verificar si la fecha completa es menor que la fecha máxima (que captura todo tipo de fechas irrelevantes), debemos verificar el número de día en relación con el día actual que está trazando en el eje X.
Este es el código corregido para su RunningTotalCurrentMonthRevenue, aunque el suyo no estaba muy lejos. Simplemente apretando ligeramente el filtro:
RunningTotalCurrentMonthRevenue =
VAR CurrentMonth = MONTH(TODAY())
VAR CurrentYear = YEAR(TODAY())
RETURN
CALCULATE(
SUM('Sales Query Live'[Selling Price]),
FILTER(
ALL('DateTable'[Date]),
'DateTable'[Date] <= MAX('DateTable'[Date]) &&
MONTH('DateTable'[Date]) = CurrentMonth &&
YEAR('DateTable'[Date]) = CurrentYear
)
)
Ahora aquí está el RunningTotalCurrentMonthRevenue2024 corregido, donde ocurre la cirugía real. Es necesario acumular por día del mes, no por toda la fecha:
RunningTotalCurrentMonthRevenue2024 =
VAR CurrentMonth = MONTH(TODAY())
VAR PriorYear = YEAR(TODAY()) - 1
RETURN
CALCULATE(
SUM('Sales Query Live'[Selling Price]),
FILTER(
ALL('DateTable'[Date]),
DAY('DateTable'[Date]) <= DAY(MAX('DateTable'[Date])) &&
MONTH('DateTable'[Date]) = CurrentMonth &&
YEAR('DateTable'[Date]) = PriorYear
)
)
Ahora, la verdadera magia aquí es que al comparar DAY('DateTable'[Date]) <= DAY(MAX('DateTable'[Date])), estás acumulando progresivamente a medida que avanzas por los días del calendario, en lugar de recalcular obstinadamente todo el mes cada vez. Se acabaron las líneas planas. Su gráfico ahora debería tener tres curvas distintas que crezcan con gracia a lo largo del mes como se supone que deben hacerlo.
Si desea ser aún más elegante más adelante, podríamos anotar dinámicamente el progreso de hoy en comparación con el pronóstico, o sombrear el área de brecha. Pero en este momento, esta solución por sí sola le dará la acumulación diaria que le faltaba.
Saludos
Hola @SM_SHED ,
El problema es el siguiente: su RunningTotalCurrentMonthRevenue2024 y MonthlyForecast en realidad no se están "acumulando" día a día. En su lugar, suman los registros elegibles de todo el mes una y otra vez, lo que lleva a una línea plana. Básicamente, todos los días, mostraban el valor mensual completo en lugar de acumularse progresivamente. No es de extrañar que se quedaran allí como un pez aturdido.
Para solucionarlo, las medidas deben acumularse correctamente a lo largo de los días. En lugar de verificar si la fecha completa es menor que la fecha máxima (que captura todo tipo de fechas irrelevantes), debemos verificar el número de día en relación con el día actual que está trazando en el eje X.
Este es el código corregido para su RunningTotalCurrentMonthRevenue, aunque el suyo no estaba muy lejos. Simplemente apretando ligeramente el filtro:
RunningTotalCurrentMonthRevenue =
VAR CurrentMonth = MONTH(TODAY())
VAR CurrentYear = YEAR(TODAY())
RETURN
CALCULATE(
SUM('Sales Query Live'[Selling Price]),
FILTER(
ALL('DateTable'[Date]),
'DateTable'[Date] <= MAX('DateTable'[Date]) &&
MONTH('DateTable'[Date]) = CurrentMonth &&
YEAR('DateTable'[Date]) = CurrentYear
)
)
Ahora aquí está el RunningTotalCurrentMonthRevenue2024 corregido, donde ocurre la cirugía real. Es necesario acumular por día del mes, no por toda la fecha:
RunningTotalCurrentMonthRevenue2024 =
VAR CurrentMonth = MONTH(TODAY())
VAR PriorYear = YEAR(TODAY()) - 1
RETURN
CALCULATE(
SUM('Sales Query Live'[Selling Price]),
FILTER(
ALL('DateTable'[Date]),
DAY('DateTable'[Date]) <= DAY(MAX('DateTable'[Date])) &&
MONTH('DateTable'[Date]) = CurrentMonth &&
YEAR('DateTable'[Date]) = PriorYear
)
)
Ahora, la verdadera magia aquí es que al comparar DAY('DateTable'[Date]) <= DAY(MAX('DateTable'[Date])), estás acumulando progresivamente a medida que avanzas por los días del calendario, en lugar de recalcular obstinadamente todo el mes cada vez. Se acabaron las líneas planas. Su gráfico ahora debería tener tres curvas distintas que crezcan con gracia a lo largo del mes como se supone que deben hacerlo.
Si desea ser aún más elegante más adelante, podríamos anotar dinámicamente el progreso de hoy en comparación con el pronóstico, o sombrear el área de brecha. Pero en este momento, esta solución por sí sola le dará la acumulación diaria que le faltaba.
Saludos
Check out the April 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.