(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo crear percentil (P90) en DAX: paso a paso

João Barros 19 de August de 2026 3 min de lectura

Calcular percentiles como el P90 en DAX es útil para identificar valores extremos (por ejemplo tiempos de respuesta, latencia o ventas) sin dejarse engañar por la media. Esta guía muestra cómo calcular P90 en DAX de forma filtrable y correcta en un informe Power BI.

Requisitos previos

  • Power BI Desktop con un modelo de datos simple (tablas de Fact y Dim).
  • Una tabla de fact con la métrica numérica (ej.: TiempoSegundos, ValorVenda).
  • Conocimientos básicos de medidas en DAX y uso de visualizaciones.

Paso 1: Entender qué es un percentil y por qué P90

Un percentil (ej.: P90) es el valor por debajo del cual se encuentran el 90% de las observaciones. P90 es útil para medir rendimiento en colas superiores. En DAX usamos funciones como PERCENTILEX.INC o PERCENTILEX.EXC, o técnicas alternativas cuando la función no esté disponible en su versión.

Paso 2: Medida simple con PERCENTILEX.INC

Si su versión de Power BI/Analysis Services incluye PERCENTILEX.INC, esta es la forma directa. Suponga una tabla FactSales con la columna ValorVenda. La medida calcula el P90 sobre el contexto de filtro actual.

Percentil P90 =
PERCENTILEX.INC(
    ALLSELECTED(FactSales),
    FactSales[ValorVenda],
    0.9
)

Paso 3: Hacer el percentil resistente a filtros indeseados

A veces quiere respetar filtros de dimensión (ej.: Producto, Región) pero ignorar filtros de otras medidas. Use ALLSELECTED o REMOVEFILTERS para controlar eso. Ejemplo: respetar selecciones de Producto y Fecha, pero ignorar filtros de CategoriaCustom:

Percentil P90 (controlado) =
VAR Base = ALLSELECTED(FactSales)
-- si quiere eliminar solo un filtro específico: REMOVEFILTERS(DimCategoria)
RETURN
PERCENTILEX.INC(
    Base,
    FactSales[ValorVenda],
    0.9
)

Paso 4: Alternativa sin PERCENTILEX (compatibilidad)

No todas las versiones tienen PERCENTILEX.INC. Puede calcular un P90 aproximado usando MEDIANX en conjuntos acumulados o crear percentil por distribución acumulativa. Ejemplo simple que usa TOPN para llegar al valor que deja el 90% por debajo — método discreto:

Percentil P90 (sin PERCENTILEX) =
VAR T =
    ADDCOLUMNS(
        SUMMARIZE(ALLSELECTED(FactSales), FactSales[ValorVenda]),
        "CountVal", CALCULATE(COUNTROWS(FactSales))
    )
VAR Total = SUMX(T, [CountVal])
VAR Target = Total * 0.9
VAR Sorted =
    ADDCOLUMNS(
        T,
        "Cum", SUMX(
            FILTER(T, FactSales[ValorVenda] <= EARLIER(FactSales[ValorVenda])),
            [CountVal]
        )
    )
VAR Result = MINX(FILTER(Sorted, [Cum] >= Target), FactSales[ValorVenda])
RETURN
Result

Paso 5: P90 por grupo (ej.: por Producto)

Para calcular el percentil por grupo, coloque la medida en un visual con la dimensión (ej.: DimProduto[Nome]) — el contexto de fila se encargará del grupo. Si quiere forzar el cálculo por grupo independientemente de otros filtros, use SUMMARIZE y EARLIER o GROUPBY. Ejemplo usando PERCENTILEX.INC por producto:

Percentil P90 por Produto =
PERCENTILEX.INC(
    VALUES(FactSales[IDVenda]),
    FactSales[ValorVenda],
    0.9
)
-- o, más robusto:
Percentil P90 por Produto (robusto) =
VAR ProdutoContext = VALUES(DimProduto[ProdutoID])
RETURN
PERCENTILEX.INC(
    CALCULATETABLE(FactSales, ProdutoContext),
    FactSales[ValorVenda],
    0.9
)

Verificar el resultado

Validar P90: 1) Compare con cálculo manual en Excel o Python para un conjunto pequeño; 2) Use una tabla visual en Power BI con la dimensión y la medida P90 y verifique si los valores parecen correctos (ej.: el 90% de las filas tienen ValorVenda <= P90). Puede probar creando una tarjeta con el conteo de filas por debajo del P90:

Linhas <= P90 =
VAR P = [Percentil P90]
RETURN
CALCULATE(COUNTROWS(FactSales), FactSales[ValorVenda] <= P)

Percentagem abaixo P90 =
DIVIDE([Linhas <= P90], CALCULATE(COUNTROWS(FactSales), ALLSELECTED(FactSales)))

Conclusión

Ahora sabe calcular P90 en DAX con PERCENTILEX.INC y alternativas para compatibilidad, además de controlar filtros y calcular por grupo. Próximos pasos: experimentar con P50/P95, comparar PERCENTILEX.INC con métodos discretos y usar P90 en alertas o segmentación. Consejo: verifique siempre el contexto de filtro — es la causa más común de resultados inesperados.