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
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
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.

Top Solution Authors