Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
CallumMurfet
Helper II
Helper II

Filtro RANKX

SIC 2 table.pngSIC2 filter.png

Por lo tanto, tengo una mesa con diferentes nombres de sectores. He creado una medida de clasificación que los clasifica por cambio absoluto de empleo después de que se hayan aplicado los filtros en rhs. Vea a dax a continuación.

RANK á RANKX(ALLSELECTED('SIC 2 lookup'[Nombre del sector]),[SIC 2 cambio absoluto],,DESC)

Entonces sólo quiero mostrar el top 10 dentro de esta tabla. Así que voy a filtrar Rango, donde es menos de 10.

Sin embargo, cuando hago esto en entonces parece mostrar sólo los sectores en la tabla anterior que están en el top 10 sin todos los filtros que se han especificado previamente, Ver más abajo.

sic 2 table after.png

Me gustaría mostrar sólo el top ten en la tabla anterior. Cualquier ayuda sería apreciada, gracias.

3 ACCEPTED SOLUTIONS

@CallumMurfet

Esto es bastante complicado. Estoy dividiendo la respuesta en varios mensajes ya que es bastante largo. La solución está en el último post.

El problema se deriva del uso de dos medidas como filtros para el objeto visual, con uno ([RANK]) algo dependiente de las filas que se muestran. Para entender lo que está pasando, ciertamente no trivial, ayuda a ver cómo se genera lo visual bajo el capó. Puede obtener acceso a esto copiando la consulta para el objeto visual en el analizador Perfomance:

Consulta DAX
Definir
Fue __DS0FilterTable =
Filtro (
KEEPFiltroS ( Valores ( 'SIC 2 lookup'[Nombre del sector] ) ),
No ( 'SIC 2 lookup'[Nombre del sector] En { Blanco () } )
)
Fue __DS0FilterTable2 =
TREATAS ( { "2018" 'Tabla de fechas'[Columna] )
Fue __DS0FilterTable3 =
TREATAS ( { "Herefordshire, Condado de" 'Búsqueda'[Geografía] )
Fue __ValueFilterDM0 =
Filtro (
KEEPFILTERS (
RESUMIRCOLUMNS (
'SIC 2 lookup'[Nombre del sector],
__DS0FilterTable,
__DS0FilterTable2,
__DS0FilterTable3,
"RANK", 'SIC 2 Empleo'[RANK],
"SIC_2_absolute_change", 'SIC 2 Empleo'[SIC 2 cambio absoluto],
"SIC2_LQ2", Ignorar ( 'SIC2 LQ'[SIC2 LQ] )
)
),
Y ( [SIC2_LQ2] > 1, [RANK] <- 10 )
)
Fue __DS0Core =
RESUMIRCOLUMNS (
'SIC 2 lookup'[Nombre del sector],
__DS0FilterTable,
__DS0FilterTable2,
__DS0FilterTable3,
__ValueFilterDM0,
"RANK", 'SIC 2 Empleo'[RANK],
"SIC_2_absolute_change", 'SIC 2 Empleo'[SIC 2 cambio absoluto]
)
Fue __DS0PrimaryWindowed =
TOPN ( 501, __DS0Core, [RANK], 1, 'SIC 2 lookup'[Nombre del sector], 1 )
Evaluar
__DS0PrimaryWindowed
Orden Por
[RANK],
'SIC 2 lookup'[Nombre del sector]

You can see that a table is first generated with all the filters other than those from the measures and after that, both measures are applied as filters. This all happens in __ValueFilterDM0, see the filtering by the measures at the end, with the step (highlighted above): Y( [SIC2_LQ2] > 1, [RANK] <-10 )

A continuación, se calcula otra tabla (__DS0Core). Esto toma __ValueFilterDM0 como base y calcula los valores para el objeto visual una vez más. Es esto lo que causa el comportamiento que está viendo. Aquí el [RANK] se ejecuta de nuevo en la tabla base después de que se haya filtrado.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

AlB
Super User
Super User

@CallumMurfet

Por lo tanto, para hacerlo más visual, este es el resultado parcial de __ValueFilterDM0 sin el último paso de filtrado ( AND ( [SIC2_LQ2] > 1, [RANK] <- 10 ) )

image.png

A continuación, cuando se agrega ese último paso de filtrado ( AND ( [SIC2_LQ2] > 1, [RANK] <-10 ) ), obtenemos:

image.pnglo anterior es el resultado final real de __ValueFilterDM0

Y luego, finalmente, se calcula __DS0Core. Tenga en cuenta que incluye __ValueFilterDM0 en los argumentos, por lo que [RANK] se calcula en la tabla mostrada anteriormente. Por lo tanto, los números de clasificación varían a medida que la clasificación se realiza únicamente en el resultado final de __ValueFilterDM0 y no en todos los valores de Nombre de sector presentes al principio, cuando [Rank] se ejecutó por primera vez al calcular __ValueFilterDM0. El resultado final(__DS0Core más algunos ajustes estéticos menores) es por lo tanto lo que tienes y antes de preguntar:

image.png

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

AlB
Super User
Super User

@CallumMurfet

En cuanto a cómo resolver su problema teniendo en cuenta lo anterior, una opción sería cambiar su medida [RANK] un poco y mantener los filtros en [RANK] y [SIC LQ] como los tenía:

RANK =
VAR auxT_ =
    FILTER ( ALLSELECTED ( 'SIC 2 lookup'[Sector name] ), [SIC2 LQ] > 1 )
RETURN
    RANKX ( auxT_, [SIC 2 absolute change],, DESC )
//+ RAND () / 100

image.pngimage.png

Tenga en cuenta, sin embargo, que estamos incluyendo el filtro visual que tenía en [SIC LQ] como parte del código. Esto es menos flexible/conveniente. Dado el funcionamiento interno que hemos visto, es la solución que he podido llegar a (hasta ahora). También he sacado la parte RAND(). No sabía cuál es la lógica, pero en cualquier caso no afecta el tema que se está discutiendo.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

View solution in original post

12 REPLIES 12
AlB
Super User
Super User

@CallumMurfet

En cuanto a cómo resolver su problema teniendo en cuenta lo anterior, una opción sería cambiar su medida [RANK] un poco y mantener los filtros en [RANK] y [SIC LQ] como los tenía:

RANK =
VAR auxT_ =
    FILTER ( ALLSELECTED ( 'SIC 2 lookup'[Sector name] ), [SIC2 LQ] > 1 )
RETURN
    RANKX ( auxT_, [SIC 2 absolute change],, DESC )
//+ RAND () / 100

image.pngimage.png

Tenga en cuenta, sin embargo, que estamos incluyendo el filtro visual que tenía en [SIC LQ] como parte del código. Esto es menos flexible/conveniente. Dado el funcionamiento interno que hemos visto, es la solución que he podido llegar a (hasta ahora). También he sacado la parte RAND(). No sabía cuál es la lógica, pero en cualquier caso no afecta el tema que se está discutiendo.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Gracias por tomarse el tiempo para ayudarme con esto, es realmente apreciado! Lo mejor, Callum.

AlB
Super User
Super User

@CallumMurfet

Por lo tanto, para hacerlo más visual, este es el resultado parcial de __ValueFilterDM0 sin el último paso de filtrado ( AND ( [SIC2_LQ2] > 1, [RANK] <- 10 ) )

image.png

A continuación, cuando se agrega ese último paso de filtrado ( AND ( [SIC2_LQ2] > 1, [RANK] <-10 ) ), obtenemos:

image.pnglo anterior es el resultado final real de __ValueFilterDM0

Y luego, finalmente, se calcula __DS0Core. Tenga en cuenta que incluye __ValueFilterDM0 en los argumentos, por lo que [RANK] se calcula en la tabla mostrada anteriormente. Por lo tanto, los números de clasificación varían a medida que la clasificación se realiza únicamente en el resultado final de __ValueFilterDM0 y no en todos los valores de Nombre de sector presentes al principio, cuando [Rank] se ejecutó por primera vez al calcular __ValueFilterDM0. El resultado final(__DS0Core más algunos ajustes estéticos menores) es por lo tanto lo que tienes y antes de preguntar:

image.png

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

AlB
Super User
Super User

Hola @CallumMurfet

¿Puedes compartir el pbix? o un pbix con datos ficticios que reproduce el problema?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

amitchandak
Super User
Super User

@CallumMurfet , Probar la medida superior como dado ejemplo

RANK á RANKX(ALLSELECTED('SIC 2 lookup'[Sector name]),[SIC 2 absolute change],,DESC) +Rand()/100

Top 10 - CALCULATE([SIC 2 absolute change],TOPN(10,all('SIC 2 lookup'[Sector name]),[RANK],DESC),VALUES('SIC 2 lookup'[Sector name]))

Esto casi ha funcionado. Cambié el Top 10 todo a todos seleccionados como:

Top 10 - CALCULATE([SIC 2 absolute change],TOPN(10,ALLSELECTED('SIC 2 lookup'[Sector name]),[RANK],ASC),VALUES('SIC 2 lookup'[Sector name]))
NEW_TABLE.JPG

Ahora muestra sólo los 10 valores principales y los otros debajo de él están en blanco. Cuando voy a filtrar topN no está en blanco. El mismo problema vuelve a aparecer que antes.

Sólo me gustaría mostrar el nombre del sector y el cambio absoluto para aquellos que no están en blanco ahora.

@CallumMurfet

Sólo tienes que ir al filtro visual, y en el filtro de la medida Top10 elegir mostrar si no está en blanco?

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Hola, sí, cuando intento hacer eso, sin embargo, no muestra todos los diez primeros. Vea a continuación.

is not blank table.JPGis not blank filter.JPG

@CallumMurfet

Me temo que tendría que ver el pbix para proporcionar una respuesta precisa

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Hola ver adjunto el enlace al pbix. ¡Gracias por tu ayuda! http://s000.tinyupload.com/index.php?file_id=26686870417895319037

@CallumMurfet

Esto es bastante complicado. Estoy dividiendo la respuesta en varios mensajes ya que es bastante largo. La solución está en el último post.

El problema se deriva del uso de dos medidas como filtros para el objeto visual, con uno ([RANK]) algo dependiente de las filas que se muestran. Para entender lo que está pasando, ciertamente no trivial, ayuda a ver cómo se genera lo visual bajo el capó. Puede obtener acceso a esto copiando la consulta para el objeto visual en el analizador Perfomance:

Consulta DAX
Definir
Fue __DS0FilterTable =
Filtro (
KEEPFiltroS ( Valores ( 'SIC 2 lookup'[Nombre del sector] ) ),
No ( 'SIC 2 lookup'[Nombre del sector] En { Blanco () } )
)
Fue __DS0FilterTable2 =
TREATAS ( { "2018" 'Tabla de fechas'[Columna] )
Fue __DS0FilterTable3 =
TREATAS ( { "Herefordshire, Condado de" 'Búsqueda'[Geografía] )
Fue __ValueFilterDM0 =
Filtro (
KEEPFILTERS (
RESUMIRCOLUMNS (
'SIC 2 lookup'[Nombre del sector],
__DS0FilterTable,
__DS0FilterTable2,
__DS0FilterTable3,
"RANK", 'SIC 2 Empleo'[RANK],
"SIC_2_absolute_change", 'SIC 2 Empleo'[SIC 2 cambio absoluto],
"SIC2_LQ2", Ignorar ( 'SIC2 LQ'[SIC2 LQ] )
)
),
Y ( [SIC2_LQ2] > 1, [RANK] <- 10 )
)
Fue __DS0Core =
RESUMIRCOLUMNS (
'SIC 2 lookup'[Nombre del sector],
__DS0FilterTable,
__DS0FilterTable2,
__DS0FilterTable3,
__ValueFilterDM0,
"RANK", 'SIC 2 Empleo'[RANK],
"SIC_2_absolute_change", 'SIC 2 Empleo'[SIC 2 cambio absoluto]
)
Fue __DS0PrimaryWindowed =
TOPN ( 501, __DS0Core, [RANK], 1, 'SIC 2 lookup'[Nombre del sector], 1 )
Evaluar
__DS0PrimaryWindowed
Orden Por
[RANK],
'SIC 2 lookup'[Nombre del sector]

You can see that a table is first generated with all the filters other than those from the measures and after that, both measures are applied as filters. This all happens in __ValueFilterDM0, see the filtering by the measures at the end, with the step (highlighted above): Y( [SIC2_LQ2] > 1, [RANK] <-10 )

A continuación, se calcula otra tabla (__DS0Core). Esto toma __ValueFilterDM0 como base y calcula los valores para el objeto visual una vez más. Es esto lo que causa el comportamiento que está viendo. Aquí el [RANK] se ejecuta de nuevo en la tabla base después de que se haya filtrado.

Por favor, marque la pregunta resuelta cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles.

Póngase en contacto conmigo de forma privada para obtener asistencia con cualquier necesidad de BI a gran escala, tutoría, etc.

Salud

SU18_powerbi_badge

Hola, vea el enlace adjunto para el pbix. ¡Gracias por tu ayuda! http://s000.tinyupload.com/index.php?file_id=79380885707636361422

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.