Sid10
En Excel, podemos usar la función percentrank.inc para calcular las puntuaciones de percentiles para una lista de valores. ¿Cómo logro lo mismo en powerbi? Entonces, a modo de ilustración, digamos, tengo un conjunto de 7 valores: para cada valor, quiero saber cuál es su puntaje percentil. Espero luego poner cada valor en diferentes cuartiles.
Pude calcular el ‘rango’, si eso ayuda.
Rank = RANKX(ALL('Table'),CALCULATE(SUM('Table'[Value])))
Tahreem24
Pruebe este DAX:
Percentil = RANKX (ALL (TableName), CALCULATE (SUM (TableName[Value] )),, ASC, SKIP) / COUNTX (ALL (TableName), TableName[Value] )
Greg_Deckler
@ Sid10 Según traducción de Excel a DAX: https://community.powerbi.com/t5/Community-Blog/Excel-to-DAX-Translation/ba-p/1060991
https://community.powerbi.com/t5/Community-Blog/PQ-Excel-to-DAX-Translation/ba-p/1061107
El equivalente de PERCENTRANK está aquí:
https://community.powerbi.com/t5/Quick-Measures-Gallery/PERCENTILERANK/td-p/1082573
y se parece a esto:
PERCENTILERANK.INC =
VAR __Value = MAX('RanksInc'[Rank])
RETURN
IF(
__Value IN SELECTCOLUMNS('ValuesInc',"Values",[Value]),
VAR __NumLower = COUNTROWS(FILTER('ValuesInc',[Value] < __Value))
VAR __NumHigher = COUNTROWS(FILTER('ValuesInc',[Value] > __Value))
VAR __Rank = __NumLower / (__NumLower + __NumHigher)
RETURN IF(ISBLANK(__Rank),0,__Rank),
VAR __Lower = MAXX(FILTER('ValuesInc',[Value] < __Value),[Value])
VAR __Higher = MINX(FILTER('ValuesInc',[Value] > __Value),[Value])
VAR __LowerNumLower = COUNTROWS(FILTER('ValuesInc',[Value] < __Lower))
VAR __LowerNumHigher = COUNTROWS(FILTER('ValuesInc',[Value] > __Lower))
VAR __LowerRank = __LowerNumLower / (__LowerNumLower + __LowerNumHigher)
VAR __HigherNumLower = COUNTROWS(FILTER('ValuesInc',[Value] < __Higher))
VAR __HigherNumHigher = COUNTROWS(FILTER('ValuesInc',[Value] > __Higher))
VAR __HigherRank = __HigherNumLower / (__HigherNumLower + __HigherNumHigher)
RETURN
__LowerRank + ( __Value - __Lower ) / (__Higher - __Lower ) * ( __HigherRank - __LowerRank )
)
Tahreem24
Pruebe este DAX:
Percentil = RANKX (ALL (TableName), CALCULATE (SUM (TableName[Value] )),, ASC, SKIP) / COUNTX (ALL (TableName), TableName[Value] )
Sid10
En respuesta a Tahreem24
@ Tahreem24 ¡Gracias por esa elegante solución para llegar a percentiles utilizando una función simple de clasificación y recuento!
Sin embargo, hay un pequeño error en su fórmula. Percentil = R / (n + 1) [In other words you need to add 1 to the denominator]. Edite su respuesta para que otros no se equivoquen al respecto.
v-lili6-msft
En respuesta a Sid10
hola @ Sid10
Simplemente ajuste la medida de rango como se muestra a continuación:
Rank 1 = RANKX(ALL('Table'[Name]),CALCULATE(SUM('Table'[Value])))
o
Rank 2 = RANKX(ALLSELECTED('Table'[Name]),CALCULATE(SUM('Table'[Value])))
Resultado:
Saludos,
Lin