Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
Hola comunidad,
Necesito ayuda sobre el siguiente problema:
En una de las páginas del informe hay un parámetro de campo y una segmentación de datos para alternar entre la parte superior e inferior para seleccionar los 5 primeros y los 5 inferiores. Parámetros de campo contiene 4 valores, es decir, desde el eje Y hasta gráficos de 6 barras con diferentes KPI.
He escrito 6 dax diferentes para cada KPI, que si el usuario selecciona cualquier dimensión y Top/Bottom podrá ver esa información relevante. Beow es el código que he escrito código para ignorar cualquier KPI que esté en blanco, de lo contrario se repetirá el rango. El siguiente código es para uno de los KPI.
El siguiente código está funcionando, pero ejecutarlo tarda alrededor de ~ 10 segundos. ¿Alguien puede ayudar a optimizar este código o cualquier otra forma de escribir este código para obtener el mismo resultado?
temp =
VAR SeleccionadoArriba = 5
var _top=IF(SELECTEDVALUE( 'Arriba/Abajo'[Desc]) = "Abajo", -1, 1 )
var _RankDim1 =
CALCULATE(RANKX(FILTER(ALL('Dim Table1'[Dim1]),not ISBLANK([KPI1])),[KPI1]*_top,,DESC,Dense))
var _RankDim2 = CALCULATE(RANKX(FILTER(ALL('Dim Table2'[Dim2]),not ISBLANK([KPI1])),[KPI1]]*_top,,DESC,Dense))
var _RankDim3 = CALCULATE(RANKX(FILTER(ALL('Dim Table3'[Dim3]),not ISBLANK([KPI1])),[KPI1]*_top,,DESC,Dense))
var _RankDim4 = CALCULATE(RANKX(FILTER(ALL('Dim Table4'[Dim4]),not ISBLANK([KPI1])),[KPI1]]*_top,,DESC,Dense))
var _dim = SELECTEDVALUE(Dim Selection'[Orden de dimensión])
DEVOLUCIÓN
SWITCH(VALUES('Dimensión'[Orden de la dimensión]),
0,IF(_RankDim1<=5,[KPI1],BLANK()),
1,IF(_RankDim2<=5,[KPI1],BLANK()),
2,SI (_RankDim3< = 5,[KPI1],EN BLANCO ()),
3,SI (_RankDim4< = 5,[KPI1],EN BLANCO ()))
¡Gracias!
Su requisito no se puede lograr de manera significativa dados los datos que está mostrando.
No hay ningún otro campo que ordenar. Vea a continuación, solo necesito los primeros 5, incluso si la siguiente clasificación se realiza por columna de dimensión (por ejemplo, nombre de marca aquí).
¿Cuál sería el resultado esperado? ¿También se puede ordenar por otro campo?
Gracias por responder.
Utilicé Rankx (summarize(filter - y filtré los espacios en blanco y, en lugar de la declaración, usé el tiempo de cambio y consulta, ahora reducido a ~ 6 segundos. KPI1 es dividir (a, b) mientras que a se calcula por sumx (debido a la multiplicación de conversiones).
Ahora, supongamos que KPI1 tiene el mismo valor para 50 filas, por ejemplo, 100% para 50 filas de 1000. Ahora, para filtrar solo los 5 primeros, esto no funciona ya que la condición es < = 5, por lo que las 50 filas cumplen con esta condición. Revisé otras publicaciones de la comunidad con RAND () para romper el empate, pero eso no funciona ya que todo es medida aquí, no columna. ¿Tenemos alguna solución para tal escneraio?
- mostrar el código de [KPI1]
- No declares las variables, en su lugar, inserta el código en la instrucción switch. De esa manera, se corta parte del procesamiento cuando se cierra el conmutador.
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.