En el análisis de datos, la función PROMEDIO estándar es una herramienta fundamental, pero tiene una debilidad significativa: es altamente susceptible a la distorsión por valores atípicos. Un solo valor extremo, ya sea alto o bajo, puede sesgar todo el resultado, tergiversando la verdadera tendencia central de los datos.
\ Aquí es donde la media truncada se vuelve esencial. Proporciona una medida más robusta del promedio al excluir un porcentaje específico de los valores más pequeños y más grandes del cálculo.
\ Aunque los modelos modernos de Power BI tienen una función TRIMMEAN integrada, esta función a menudo no está disponible cuando se usa una conexión en vivo a un modelo antiguo de Analysis Services (SSAS). Este artículo proporciona un patrón DAX manual robusto que replica esta funcionalidad y permanece completamente dinámico, respondiendo a todos los filtros y segmentaciones en tu informe.
Esta medida calcula una media truncada del 20% eliminando el 10% inferior y el 10% superior de los valores antes de promediar el 80% restante.
\ Puedes pegar este código directamente en la barra de fórmulas de "Nueva medida".
Trimmed Mean (20%) = VAR TargetTable = 'FactTable' VAR TargetColumn = 'FactTable'[MeasureColumn] VAR LowerPercentile = 0.10 // Define el 10% inferior a recortar VAR UpperPercentile = 0.90 // Define el 10% superior a recortar (1.0 - 0.10) // 1. Encuentra el valor en el percentil 10 VAR MinThreshold = PERCENTILEX.INC( FILTER( TargetTable, NOT( ISBLANK( TargetColumn ) ) ), TargetColumn, LowerPercentile ) // 2. Encuentra el valor en el percentil 90 VAR MaxThreshold = PERCENTILEX.INC( FILTER( TargetTable, NOT( ISBLANK( TargetColumn ) ) ), TargetColumn, UpperPercentile ) // 3. Calcula el promedio, incluyendo solo valores entre los umbrales RETURN CALCULATE( AVERAGEX( FILTER( TargetTable, TargetColumn >= MinThreshold && TargetColumn <= MaxThreshold ), TargetColumn ) )
Esta fórmula funciona en tres pasos distintos, todos los cuales se ejecutan dentro del contexto de filtro actual (por ejemplo, cualquier segmentación que el usuario haya seleccionado).
TargetTable & TargetColumn: Asignamos los nombres de la tabla y la columna a variables para un código limpio y reutilizable. Debes cambiar 'FactTable'[MeasureColumn] para que coincida con tu modelo de datos.LowerPercentile / UpperPercentile: Definimos los límites. 0.10 y 0.90 significan que estamos recortando el 10% inferior y el 10% superior. Para recortar el 5% de cada extremo (un recorte total del 10%), usarías 0.05 y 0.95.MinThreshold & MaxThreshold: Estas variables almacenan los valores reales que corresponden a nuestros límites de percentil.PERCENTILEX.INC: Usamos esta función "iteradora" porque nos permite primero FILTRAR la tabla.MinThreshold contiene el valor del percentil 10 (por ejemplo, 4.5) y MaxThreshold contiene el valor del percentil 90 (por ejemplo, 88.2) para los datos actualmente visibles.RETURN CALCULATE(...): La función CALCULATE es la clave para hacer que la medida sea dinámica. Asegura que todo el cálculo respete los filtros aplicados por cualquier segmentación o visual en el informe.AVERAGEX(FILTER(...)): El núcleo del cálculo. Usamos AVERAGEX para iterar sobre una tabla.FILTER(...): Filtramos nuestra TargetTable una última vez. Este filtro es el "recorte". Mantiene solo las filas donde el valor en TargetColumn es:AVERAGEX(..., TargetColumn): AVERAGEX luego calcula el promedio simple de TargetColumn solo para las filas que pasaron el filtro.Al implementar este patrón DAX, creas un KPI robusto, dinámico y resistente a valores atípicos. Esta medida proporciona una imagen más precisa de la tendencia central de tus datos y se recalculará correctamente sobre la marcha a medida que los usuarios interactúen con tu informe de Power BI.
Gracias por tomarte el tiempo para explorar información relacionada con datos conmigo. Aprecio tu participación. Si encuentras útil esta información, te invito a seguirme o conectarte conmigo en LinkedIn o X(@Luca_DataTeam). ¡Feliz exploración!👋

