Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.
En Excel, podemos usar la función percentrank.inc para calcular las puntuaciones de percentil para una lista de valores. ¿Cómo logro lo mismo en powerbi? Por lo tanto, para la ilustración, por ejemplo, tengo un conjunto de 7 valores - Para cada valor quiero saber cuál es su puntuación de percentil. Espero entonces poner cada valor en diferentes cuartiles.
Pude calcular el 'rango', si eso ayuda.
Rank á RANKX(ALL('Table'),CALCULATE(SUM('Table'[Value])))
Solved! Go to Solution.
Prueba este DAX:
Percentile á RANKX ( ALL ( TableName ), CALCULATE ( SUM ( TableName[Value] ) ), , ASC, SKIP ) / COUNTX ( ALL ( TableName ), TableName[Value] )
hola @Sid10
Sólo tiene que ajustar 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
@Sid10 Según Excel a DAX Translation: https://community.powerbi.com/t5/Community-Blog/Excel-to-DAX-Translation/ba-p/1060991
https://community.powerbi.com/t5/Community-Blog/P-Q-Excel-to-DAX-Translation/ba-p/1061107
PERCENTRANK Equivalente está aquí:
https://community.powerbi.com/t5/Quick-Measures-Gallery/PERCENTILERANK/td-p/1082573
y se ve así:
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 )
)
Prueba este DAX:
Percentile á RANKX ( ALL ( TableName ), CALCULATE ( SUM ( TableName[Value] ) ), , ASC, SKIP ) / COUNTX ( ALL ( TableName ), TableName[Value] )
@Tahreem24 ¡Gracias por esa elegante solución para llegar a los percentiles usando una simple función Rank and Count!
Sin embargo, hay un pequeño error en su fórmula. Percentil á R/(n+1) [En otras palabras, es necesario añadir 1 al denominador]. Por favor, edite su respuesta para que otros no se desacerten en esto.
hola @Sid10
Sólo tiene que ajustar 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
@v-lili6-msft Tu fórmula Rankx funciona muy bien en una mesa. Pero en el momento en que creo una relación 1-1 entre mi tabla con otra tabla [basada en la clave GrantNum], asigna un rango de 1 a una fila en blanco, mientras que todas las demás filas con datos se clasifican a partir de entonces. ¿Alguna idea de por qué eso podría estar pasando? Vea la muestra de pantalla a continuación. El número de concesión tiene una relación con otra tabla [cuando elimino la relación, el rango se calcula correctamente de nuevo]. Gracias.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |