Filtrar tabla y luego clasificar

Un usuario Pregunto ✅

SAM190370

Me gustaría clasificar una tabla. Esto funciona bien con rankx. Sin embargo, me gustaría filtrar la tabla antes de hacer la clasificación. Sin embargo, parece que la fórmula ignora el filtrado.

1) Primero ves los datos

2) Clasificación sin filtrado

3) Clasificación sin Dinamarca

Captura.PNG

¿Cómo debe ser la medida? Probé este, pero parece resumir los 3 primeros a 1000, simplemente ignorando el nuevo ranking.

Top3SinDinamarca:=CALCULAR(‘Datos'[Amount];FILTRO(Datos;Datos[Country]<>«Dinamarca»);FILTRO(Datos;RANKX(TODOS(Datos);[Amount])<=3))

Parece que el rango ignora cualquier filtro antes del ranking.

¿Alguna sugerencia?

/ Soren


@SAM190370 escribió:

Me gustaría clasificar una tabla. Esto funciona bien con rankx. Sin embargo, me gustaría filtrar la tabla antes de hacer la clasificación. Sin embargo, parece que la fórmula ignora el filtrado.

1) Primero ves los datos

2) Clasificación sin filtrado

3) Clasificación sin Dinamarca

Captura.PNG

¿Cómo debe ser la medida? Probé este, pero parece resumir los 3 primeros a 1000, simplemente ignorando el nuevo ranking.

Top3SinDinamarca:=CALCULAR(‘Datos'[Amount];FILTRO(Datos;Datos[Country]<>«Dinamarca»);FILTRO(Datos;RANKX(TODOS(Datos);[Amount])<=3))

Parece que el rango ignora cualquier filtro antes del ranking.

¿Alguna sugerencia?

/ Soren


@SAM190370

Tal vez puedas probar una medida con más flexibilidad. Consulta más detalles en el pbix adjunto.

Top3ofAnySelectedCountry =
VAR TBL =
    SUMMARIZE ( Data, Data[Country], "sumtotal", SUM ( Data[Amount] ) )
VAR RNK_TBL =
    ADDCOLUMNS ( TBL, "RANK", RANKX ( TBL, [sumtotal],, DESC, DENSE ) )
RETURN
    SUMX ( FILTER ( RNK_TBL, [RANK] <= 3 ), [sumtotal] )

Captura.PNG


@SAM190370 escribió:

Me gustaría clasificar una tabla. Esto funciona bien con rankx. Sin embargo, me gustaría filtrar la tabla antes de hacer la clasificación. Sin embargo, parece que la fórmula ignora el filtrado.

1) Primero ves los datos

2) Clasificación sin filtrado

3) Clasificación sin Dinamarca

Captura.PNG

¿Cómo debe ser la medida? Probé este, pero parece resumir los 3 primeros a 1000, simplemente ignorando el nuevo ranking.

Top3SinDinamarca:=CALCULAR(‘Datos'[Amount];FILTRO(Datos;Datos[Country]<>«Dinamarca»);FILTRO(Datos;RANKX(TODOS(Datos);[Amount])<=3))

Parece que el rango ignora cualquier filtro antes del ranking.

¿Alguna sugerencia?

/ Soren


@SAM190370

Tal vez puedas probar una medida con más flexibilidad. Consulta más detalles en el pbix adjunto.

Top3ofAnySelectedCountry =
VAR TBL =
    SUMMARIZE ( Data, Data[Country], "sumtotal", SUM ( Data[Amount] ) )
VAR RNK_TBL =
    ADDCOLUMNS ( TBL, "RANK", RANKX ( TBL, [sumtotal],, DESC, DENSE ) )
RETURN
    SUMX ( FILTER ( RNK_TBL, [RANK] <= 3 ), [sumtotal] )

Captura.PNG

vanessafvg

@SAM190370

creo que el problema tiene que ver con su declaración all, all elimina el contexto del filtro, intente allselected

Top3SinDinamarca:=CALCULAR(‘Datos'[Amount];FILTRO(Datos;Datos[Country]<>«Dinamarca»);FILTRO(Datos;RANKX(TODO SELECCIONADO(Datos);[Amount])<=3))

SAM190370

En respuesta a vanessafvg

@vanessafvg Gracias por tu aporte. Tal vez estoy haciendo algo mal porque no puedo hacer que funcione.

/ sorén

SAM190370

En respuesta a vanessafvg

@Eric_Zhang Esta es definitivamente una solución más flexible y en realidad funciona muy bien. Sin embargo, en mi situación del mundo real, tengo varios «países» para seleccionar y me gustaría anular la selección de uno.

¿Tienes alguna idea de cómo puedo escribir en el filtro directamente en la medida para que funcione?

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *