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

Earn a 50% discount on the DP-600 certification exam by completing the Fabric 30 Days to Learn It challenge.

Reply
Syndicate_Admin
Administrator
Administrator

Obtener el máximo para cada estudiante para cada mes

Saludos encantadores memebers,

digamos que tengo una tabla donde contiene la lista del alumno, su nota para cada asignatura y el número de mes.

Estoy intentando crear una columna calculada ( ejemplo: Max_value columna en la imagen de abajo)

esta columna contendrá la nota máxima para cada estudiante en cada mes.

Pude obtener el valor máximo para cada estudiante, pero t no puedo obtener el máximo para cada mes también.

A continuación se muestra mi salida, como puede ver Max_value columna es lo que estoy tratando de lograr. Gracias a todos de antemano

Rfrikha1992_0-1631547377402.png

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

Hay @Rfrikha1992,

Siga estos pasos:

1. Agregue una columna de índice:

Eyelyn9_0-1631777559116.png

2. Use RANKX() para clasificar por marca en función de cada número de mes e ID de estudiante:

Rank by Mark =
RANKX (
    FILTER (
        'Table',
        [Month Number] = EARLIER ( 'Table'[Month Number] )
            && [Student ID] = EARLIER ( 'Table'[Student ID] )
    ),
    [Mark],
    ,
    DESC,
    DENSE
)

3. Utilice RANKX() de nuevo para clasificar en función de la columna Rango y la columna Índice:

Max_Value =
VAR _rank2 =
    RANKX (
        FILTER (
            'Table',
            [Month Number] = EARLIER ( 'Table'[Month Number] )
                && [Student ID] = EARLIER ( 'Table'[Student ID] )
        ),
        [Rank by Mark] * 10 + [Index],
        ,
        ASC,
        DENSE
    )
RETURN
    IF ( _rank2 = 1, [Mark], BLANK () )

Aquí está el resultado final:

Eyelyn9_1-1631777637650.png

Saludos
Eyelyn Qin
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

View solution in original post

5 REPLIES 5
Syndicate_Admin
Administrator
Administrator

Hay @Rfrikha1992,

Siga estos pasos:

1. Agregue una columna de índice:

Eyelyn9_0-1631777559116.png

2. Use RANKX() para clasificar por marca en función de cada número de mes e ID de estudiante:

Rank by Mark =
RANKX (
    FILTER (
        'Table',
        [Month Number] = EARLIER ( 'Table'[Month Number] )
            && [Student ID] = EARLIER ( 'Table'[Student ID] )
    ),
    [Mark],
    ,
    DESC,
    DENSE
)

3. Utilice RANKX() de nuevo para clasificar en función de la columna Rango y la columna Índice:

Max_Value =
VAR _rank2 =
    RANKX (
        FILTER (
            'Table',
            [Month Number] = EARLIER ( 'Table'[Month Number] )
                && [Student ID] = EARLIER ( 'Table'[Student ID] )
        ),
        [Rank by Mark] * 10 + [Index],
        ,
        ASC,
        DENSE
    )
RETURN
    IF ( _rank2 = 1, [Mark], BLANK () )

Aquí está el resultado final:

Eyelyn9_1-1631777637650.png

Saludos
Eyelyn Qin
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

¡Funciona perfectamente! Gracias

Syndicate_Admin
Administrator
Administrator

@Rfrikha1992 - No es exactamente la salida que está buscando, pero los cálculos son correctos.

Max_Value = 
VAR student = TableName[Student ID]
VAR monthNum = TableName[Month Number]
VAR Result =
CALCULATE(
    MAX(TableName[Mark]),
    FILTER(
        TableName,
        TableName[Student ID] = student
    ),
    KEEPFILTERS(TableName[Month Number] = monthNum)
)
Return 
    Result
Month Max_Value = 
VAR monthNum = TableName[Month Number]
VAR Result =
CALCULATE(
    MAX(TableName[Mark]),
    FILTER(
        TableName,
        TableName[Month Number] = monthNum
    )
)
Return 
    Result

image.png

por desgracia no es la salida que estoy buscando.

lo que necesito es para cada mes el rango más alto para cada estudiante como se muestra en la imagen de arriba.

@Rfrikha1992 - Parece que no puedo obtener el resultado esperado. Lo más cerca que pude llegar es a continuación:

Max_Value = 
VAR student = TableName[Student ID]
VAR monthNum = TableName[Month Number]
VAR Result =
CALCULATE(
    MAX(TableName[Mark]),
    FILTER(
        TableName,
        TableName[Student ID] = student
    ),
    KEEPFILTERS(TableName[Month Number] = monthNum)
)
Return 
    CALCULATE(
        MAX(TableName[Mark]),
        FILTER(
            ALLEXCEPT(TableName,TableName[Mark]),
            TableName[Mark] = Result
        )
    )

image.png

Esperemos que alguien más pueda mostrarnos a ambos cómo obtener el resultado deseado.

Helpful resources

Announcements
LearnSurvey

Fabric certifications survey

Certification feedback opportunity for the community.

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.