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

Power BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Desviación de la media: ¿cómo?

Hola a todos

Tengo esta tabla sobre el valor de las ventas mensuales, sin embargo, en caso de que dibuje una línea promedio, las diferencias son realmente pequeñas, por lo que me gustaría mostrar la desviación del promedio en un gráfico de barras diferente. Ya he calculado el promedio de ventas mensuales, que es ventas anuales/12. En el siguiente paso me he atascado. Necesito calcular las ventas mensuales menos las ventas promedio y luego ponerlas en un gráfico de barras. ¿Cómo lo harías? No puedo agregar una nueva columna, porque tengo datos de pedidos diarios.

ChatGPT acaba de dar esta medida, pero eso no funciona:

Ventas mensuales =
CALCULAR(
SUM('Pedidos de pizza'[Valor del pedido]),
ALLEXCEPT('Pedidos de pizza', 'Pedidos de pizza'[Mes])
)

Pamiko_0-1749764925221.png

Gracias de antemano por su ayuda.

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

@Pamiko ,

Gracias por ponerse en contacto con la comunidad de Microsoft Fabric.

¡Gracias @burakkaragoz @danextian @Ashish_Excel para la pronta respuesta.

Quiero comprobar si ha tenido la oportunidad de revisar la información proporcionada y resolver el problema. Si la respuesta ha abordado su consulta, acéptela como una solución y dé un 'Felicitaciones' para que otros miembros puedan encontrarla fácilmente.

Gracias.

Syndicate_Admin
Administrator
Administrator

Hola @Pamiko ,

Revisé su mensaje y también revisé la respuesta de @Ashish_Excel en el foro. Estás muy cerca, pero entiendo por qué es confuso, especialmente cuando se trabaja con medidas y no con columnas calculadas.

Así es como lo abordaría (ya he lidiado con problemas similares en Power BI antes):

  1. La tabla de calendario es imprescindible: asegúrese de tener una tabla de calendario/fecha en su modelo, con al menos columnas para [Fecha], [Año], [Nombre del mes] y [Número de mes]. Si no tiene uno, puede generarlo en Power Query o con DAX.

  2. Relaciones: La columna de fecha de la tabla "Pedidos de pizza" debe estar relacionada con la columna [Fecha] de la tabla del calendario (una sola dirección está bien).

  3. Medidas:

    • Ventas mensuales (total):
      DAX
      Total = SUM('Pizza orders'[Ordervalue])
    • Promedio mensual:
      This one’s important—use AVERAGEX over all months in your calendar, not just a “plain average.”
      DAX
      Monthly Average = 
        AVERAGEX(
          ALL('Calendar'[Month]), 
          CALCULATE([Total])
        )
    • Desviación de la media (Diff):
      DAX
      Diff = [Total] - [Monthly Average]
  4. Visual: en el gráfico de barras, use [Nombre del mes] de la tabla Calendario en el eje y muestre la medida [Diff] como valor. Eso te permitirá ver cuánto están las ventas de cada mes por encima o por debajo del promedio.

Consejos extra:

  • Si los meses no están ordenados correctamente, ordene [Nombre del mes] por [Número de mes] en la tabla del calendario.
  • Asegúrese de usar medidas, no columnas, para estos cálculos.
  • Si sigue obteniendo los mismos valores para todos los meses (a veces ocurre con el contexto de filtro), vuelva a comprobar la parte ALL o ALLSELECTED en la medida Promedio mensual.

Avísame si golpeas algún bloqueador, puedo enviar capturas de pantalla más detalladas o incluso una muestra de PBIX si es necesario.

Si mi respuesta resolvió su consulta, por favor márquela como la Solución Aceptada para ayudar a otros. Además, le agradecería que me felicitara si le resultó útil mi respuesta.

Gracias por la respuesta detallada. Desafortunadamente, todavía tengo problemas. Adjuntando imagen:

Pamiko_1-1749809368913.png

Év = Año

Hónap = Mes (lo siento, también estoy trabajando en mi lengua materna).

Mis medidas:

Promedio mensual =
PROMEDIOX(
TODO('Calendario'[Mes]),
CALCULAR([Ventas totales])
)
Ventas totales = SUMA('Pedidos de pizza'[Valor del pedido])
Diferencia =
[Ventas totales] - [Promedio mensual]
El valor total de las ventas es: 817860 k, lo que puedo ver en el gráfico.
No entiendo, cuál puede ser el problema, pero realmente agradecería su ayuda.

@Pamiko ,

Gracias por compartir más detalles y tu captura de pantalla. Aclaremos qué está sucediendo y cómo puede solucionarlo.

1. Por qué tu promedio mensual no funciona como esperabas:
Su fórmula actual:

DAX
Monthly Average =
AVERAGEX(
    ALL('Naptár'[Hónap]),
    CALCULATE([Totalsales])
)

Se trata de calcular el promedio de todos los meses, pero si la medida [Totalsales] no se ajusta correctamente al contexto del filtro, puede devolver el mismo valor para todos los meses o, a veces, el valor total para todos los meses.

2. El enfoque correcto:
Desea obtener el promedio de ventas mensuales (es decir, "ventas totales de los meses visibles" dividido por "número de meses visibles") y, a continuación, para cada mes, restar el promedio del total de ese mes.

Esta es una forma sólida de hacerlo:

  • Ventas Totales:

    Totalsales = SUM('Pizza orders'[Rendelesertek])
  • Promedio mensual (por meses visibles):

    Monthly Average =
        CALCULATE(
            [Totalsales],
            ALLSELECTED('Naptár'[Hónap])
        ) / CALCULATE(
            DISTINCTCOUNT('Naptár'[Hónap]),
            ALLSELECTED('Naptár'[Hónap])
        )
    • Esto toma las ventas totales de todos los meses visibles y las divide por la cantidad de meses que son visibles en su gráfico, que generalmente es lo que desea para una "desviación del gráfico de barras del promedio".
  • Desviación:

    Diff = [Totalsales] - [Monthly Average]

3. Qué comprobar:

  • Asegúrese de que el eje de su objeto visual esté usando 'Naptár' [Hónap] de su calendario/tabla de atenuación, no de su tabla de pedidos.
  • Si está segmentando por año, asegúrese de que su DAX también respete el año (por lo tanto, el promedio no es para todos los años combinados a menos que eso sea lo que desee).
  • Utilice ALLSELECTED en lugar de ALL para asegurarse de que se respetan las segmentaciones de datos y los filtros en el cálculo del promedio.

4. Importante:

  • Si desea el promedio de cada año, agregue [Év] tanto al numerador como al denominador en el DAX anterior.
  • Si desea un promedio global (todos los meses, todos los años), simplemente use ALL('Naptár'[Hónap]) en su lugar.

5. Prueba práctica:
Intente colocar esta nueva medida [Promedio mensual] en un objeto visual de tarjeta. Debería mostrar el mismo número que obtendrías si sumas todas las ventas de los meses visibles y lo dividas por el número de meses visibles. El [Diff] de cada mes debería decirte cuánto por encima o por debajo del promedio está.

Avísame si esto lo soluciona o si ves algún número impar, ¡feliz de revisar tu PBIX de muestra si puedes compartir una versión ficticia!

Si mi respuesta resolvió su consulta, por favor márquela como la Solución Aceptada para ayudar a otros. Además, le agradecería que me felicitara si le resultó útil mi respuesta.

@Pamiko ,

Gracias por compartir más detalles y tu captura de pantalla. Aclaremos qué está sucediendo y cómo puede solucionarlo.

1. Por qué tu promedio mensual no funciona como esperabas:
Su fórmula actual:

DAX
Monthly Average =
AVERAGEX(
    ALL('Naptár'[Hónap]),
    CALCULATE([Totalsales])
)

Se trata de calcular el promedio de todos los meses, pero si la medida [Totalsales] no se ajusta correctamente al contexto del filtro, puede devolver el mismo valor para todos los meses o, a veces, el valor total para todos los meses.

2. El enfoque correcto:
Desea obtener el promedio de ventas mensuales (es decir, "ventas totales de los meses visibles" dividido por "número de meses visibles") y, a continuación, para cada mes, restar el promedio del total de ese mes.

Esta es una forma sólida de hacerlo:

  • Ventas Totales:

    Totalsales = SUM('Pizza orders'[Rendelesertek])
  • Promedio mensual (por meses visibles):

    Monthly Average =
        CALCULATE(
            [Totalsales],
            ALLSELECTED('Naptár'[Hónap])
        ) / CALCULATE(
            DISTINCTCOUNT('Naptár'[Hónap]),
            ALLSELECTED('Naptár'[Hónap])
        )
    • Esto toma las ventas totales de todos los meses visibles y las divide por la cantidad de meses que son visibles en su gráfico, que generalmente es lo que desea para una "desviación del gráfico de barras del promedio".
  • Desviación:

    Diff = [Totalsales] - [Monthly Average]

3. Qué comprobar:

  • Asegúrese de que el eje de su objeto visual esté usando 'Naptár' [Hónap] de su calendario/tabla de atenuación, no de su tabla de pedidos.
  • Si está segmentando por año, asegúrese de que su DAX también respete el año (por lo tanto, el promedio no es para todos los años combinados a menos que eso sea lo que desee).
  • Utilice ALLSELECTED en lugar de ALL para asegurarse de que se respetan las segmentaciones de datos y los filtros en el cálculo del promedio.

4. Importante:

  • Si desea el promedio de cada año, agregue [Év] tanto al numerador como al denominador en el DAX anterior.
  • Si desea un promedio global (todos los meses, todos los años), simplemente use ALL('Naptár'[Hónap]) en su lugar.

5. Prueba práctica:
Intente colocar esta nueva medida [Promedio mensual] en un objeto visual de tarjeta. Debería mostrar el mismo número que obtendrías si sumas todas las ventas de los meses visibles y lo dividas por el número de meses visibles. El [Diff] de cada mes debería decirte cuánto por encima o por debajo del promedio está.

Avísame si esto lo soluciona o si ves algún número impar, ¡feliz de revisar tu PBIX de muestra si puedes compartir una versión ficticia!

Si mi respuesta resolvió su consulta, por favor márquela como la Solución Aceptada para ayudar a otros. Además, le agradecería que me felicitara si le resultó útil mi respuesta.

@burakkaragoz

¿Otro copiar y pegar de IA sin validación?

@Pamiko

Dado que Total es una medida, no es necesario que se ajuste a CALCULATE, sino que se aplica implícitamente.

Esta medida no devolverá el promedio general de cada mes, sino simplemente el valor del mes actual. Lo será a nivel total.

Monthly Average = 
AVERAGEX ( ALL ( Dates[Month Short] ), [Total Revenue] )

Si desea que el promedio se aplique a cada mes, modifique el contexto del filtro mediante CALCULATE

Monthly Average CALCULATE = 
CALCULATE (
    AVERAGEX ( VALUES ( Dates[Month Short] ), [Total Revenue] ),
    ALLSELECTED ( Dates ) --applies to all visible rows only, use ALL to apply to the whole Dates
)

danextian_0-1749814647125.png

Syndicate_Admin
Administrator
Administrator

Hola

Asegúrese de crear una tabla de calendario con fórmulas de columna calculadas para el año, el nombre del mes y el número de mes. Ordene el nombre del mes por el número del mes. Cree una relación (Muchos a uno y solteros) desde la columna Fecha de la tabla de datos de usted a la columna Fecha de la tabla Claendar. En el objeto visual, arrastre el nombre del año y el mes de la tabla de calendario. Escribe estas medidas

Total = SUM('Pedidos de pizza'[Valor del pedido])

Promedio mensual = promediox(todoexcepto(calendario,calendario[año]),[Total])

Diff = [total]-[promedio mensual]

Si esto no funciona, comparta el enlace de descarga del archivo PBI.

Helpful resources

Announcements
June 2025 Power BI Update Carousel

Power BI Monthly Update - June 2025

Check out the June 2025 Power BI update to learn about new features.

June 2025 community update carousel

Fabric Community Update - June 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors