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

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

Reply
nitrox
Helper I
Helper I

Ayuda con filtro en tabla para mostrar los primeros 10 registros

Buenas tardes. Me gustaría solicitar ayuda con un tema que estoy intentando realizar. Se trata de una tabla que tiene la siguiente estructura.

 

nitrox_0-1615050325455.png

 

En base a estos datos, necesito poder mostrar los 10 primeros registros según la columna tipo. Es decir, en base al ejemplo anterior, debería mostrarme los 9 primeros registros porque son de tipo A y luego el siguiente que es de tipo B.

 

Por mi parte he intentando filtrar por medio de la opción TOP N pero no me funciona. Al palicar el filtro TOP N por la columna "Tipo" y añadiendo como valor la columna nº de registros

 

También he intentado utilizar una medida DAX para optener con RANX algo similar utilizando esta formula (pero tampoco me funciona bien).

 

Total registros = sum(Hoja1[Registros])

Top N registros por tipo = CALCULATE(Hoja1[Total registros], filter(values(Hoja1[Tipo]), if(rankx(all(Hoja1), [Total registros], ,DESC) <= 6, [Total registros], BLANK())))

 

Espero que alguien me pueda ayudar. Muchas gracias 🙂

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @Syndicate_Admin,

Trate de crear una medida como esta:

Measure =
VAR t =
    TOPN ( 10, ALLSELECTED ( 'Table' ), 'Table'[Type], ASC, 'Table'[Users], ASC )
RETURN
    COUNTROWS ( INTERSECT ( t, 'Table' ) )

top10.gif

Saludos

Icey

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

8 REPLIES 8
Syndicate_Admin
Administrator
Administrator

No @Syndicate_Admin,

Trate de crear una medida como esta:

Measure =
VAR t =
    TOPN ( 10, ALLSELECTED ( 'Table' ), 'Table'[Type], ASC, 'Table'[Users], ASC )
RETURN
    COUNTROWS ( INTERSECT ( t, 'Table' ) )

top10.gif

Saludos

Icey

Si este post ayuda, entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Syndicate_Admin
Administrator
Administrator

Hola @Syndicate_Admin,

Puede crear una columna personalizada y marcar la A como 1, B como 2, C como 3 y así sucesivamente.

Custom_Sort = SWITCH({Column_Name}.
"A", 1,

"B", 2,..................)

A continuación, puede ordenar toda la tabla sobre la base de column(Custom_Sort) personalizadas y, a continuación, simplemente ajustar los 10 valores principales en función de la columna personalizada.

Si esto funciona con usted, por favor hágamelo saber y marcarlo como solución!

Gracias.

Hola @Syndicate_Admin. Muchas gracias por tus comentarios. La verdad es que había llegado a crear una columna como la que indicas (de una forma más artesanal con if(....)). Sin embargo, no he encontrado la forma de hacer lo que indicas para mostrar los primeros registros.

 

A continuación te muestro la tabla que he llegado a conseguir con la condición que te comentaba antes.

nitrox_0-1615061629901.png

 

@nitrox 

Insisto, cual es el criterio para seleccionar las filas de la categoría B que quieres incluir?





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






PaulDBrown
Community Champion
Community Champion

@nitrox 

La selección de "A" está clara. Cual es el criterio para la selección de las filas de "B"?





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






PaulDBrown
Community Champion
Community Champion

@nitrox 

No puedes simplemente filtrar por el campo "Nº" en el panel de filtros, seleccionando del 1 al 10?





Did I answer your question? Mark my post as a solution!
In doing so, you are also helping me. Thank you!

Proud to be a Super User!
Paul on Linkedin.






Hola @PaulDBrown 

Después de revisar vuestros comentarios he podido conseguir (más o menos) lo que estaba buscando. Os comento lo que he realizado.

1. He ordenado la tabla desde el modelo de datos por la columna "Tipo"
2. He creado una columna de tipo indice.
3. Una vez adaptado el modelo, he creado una medida que me permita numerar las filas de la tabla. De esta forma, le puedo decir que me muestre las 10 primeras.

RowNum = CALCULATE(COUNT ( Hoja1[Índice] ), FILTER ( ALLSELECTED ( Hoja1 ), Hoja1[Índice] <= MAX ( Hoja1[Índice])))

4. Por último, he añadido la la medida rownum y con el filtro indicado anteriormente ya me ha mostrado los primeros 10 registros.

Con estos cambios, ya puedo obtener la tabla con la ordenación que buscaba teniendo en cuenta los 10 primeros registros.

El problela que tengo ahora, es que la medida rownum no me funciona correctamente si no añado la columna indice a la tabla. Es decir, si no añado la columna indice solo me cuenta los primeros 8 registros. Si la añado, entonces me funciona correctamente. Esto puede ser porque la medida hace referencia a esa columna?

Muchas gracias por vuestra ayuda 🙂

Hola @PaulDBrown. Esa columna la he cargado a modo de ejemplo. En la tabla origina, los tipos de registro A, B y C vienen desordenados con sus identificadores correspondientes.

Helpful resources

Announcements
September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

Sept NL Carousel

Fabric Community Update - September 2024

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

Top Solution Authors