Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Get Fabric certified for FREE! Don't miss your chance! Learn more

Reply
Syndicate_Admin
Administrator
Administrator

Ayuda con la creación de medidas y la creación de gráficos

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.

RunningTotalCurrentMonthRevenue =
VAR CurrentMonth (Mes actual) = MES(HOY())
VAR Año en curso = AÑO(HOY())
DEVOLUCIÓN
CALCULAR (
SUMA('Consulta de ventas en vivo'[Precio de venta]),
FILTRO (
TODO('Tabla de fechas'),
'Tabla de fechas'[Fecha] <= MÁXIMO('Tabla de fechas'[Fecha]) &&
MES('Tabla de fechas'[Fecha]) = CurrentMonth (Mes actual) &&
AÑO('Tabla de fechas'[Fecha]) = Año en curso
)
)
-------
RunningTotalCurrentMonthRevenue2024 =
VAR CurrentMonth (Mes actual) = MES(HOY())
VAR Año en curso = AÑO(HOY())
VAR MaxDate = MÁXIMO('Tabla de fechas'[Fecha])
DEVOLUCIÓN
CALCULAR (
SUMA('Consulta de ventas en vivo'[Precio de venta]),
FILTRO (
TODO('Tabla de fechas'),
'Tabla de fechas'[Fecha] <= MaxDate &&
MES('Tabla de fechas'[Fecha]) = CurrentMonth (Mes actual) &&
AÑO('Tabla de fechas'[Fecha]) = Año en curso - 1
)
)
-------
Pronóstico mensual =
VAR CurrentMonth (Mes actual) = MES(HOY())
VAR Año en curso = AÑO(HOY())
DEVOLUCIÓN
CALCULAR (
SUMX (
'Consulta de ventas en vivo',
VAR Tasa de aumento =
INTERRUPTOR (
VERDADERO(),
'Consulta de ventas en vivo'[SorMaster.Cliente] EN {Lista de clientes en el formato "cliente1", "cliente2", "cliente3"}, 0.15,
'Consulta de ventas en vivo'[SorMaster.Cliente] EN {"cliente4", "Cumtómero5"}, 0.35,
0 -- Mayúsculas y minúsculas predeterminadas si no hay coincidencia
)
DEVOLUCIÓN 'Consulta de ventas en vivo'[Precio de venta] * (1 + Tasa de aumento)
),
FILTRO (
TODO('Tabla de fechas'),
'Tabla de fechas'[Fecha] <= MÁXIMO('Tabla de fechas'[Fecha]) &&
MES('Tabla de fechas'[Fecha]) = CurrentMonth (Mes actual) &&
AÑO('Tabla de fechas'[Fecha]) = Año en curso - 1
)
)
--------
SM_SHED_0-1745858569695.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

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

View solution in original post

1 REPLY 1
Syndicate_Admin
Administrator
Administrator

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

Helpful resources

Announcements
Sticker Challenge 2026 Carousel

Join our Community Sticker Challenge 2026

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

January Power BI Update Carousel

Power BI Monthly Update - January 2026

Check out the January 2026 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Kudoed Authors