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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
Syndicate_Admin
Administrator
Administrator

Restar el total de columna anterior de la fila actual por ID

Hola a todos, he buscado una respuesta a esto, pero se han quedado atrapados en un lío con DAX para esperar que alguien por favor podría ponerme fuera de mi miseria!

Tengo un conjunto de datos donde necesito calcular el progreso de los alumnos desde la lección 1 hasta la lección 2.

El estudiante es puntuado en la Lección 1 y luego se puntó de nuevo en la Lección 2.

Necesito restar la puntuación de la lección 1 de la puntuación de la lección 2 para obtener el valor de Progreso para cada ID de estudiante.

No todos los alumnos tendrán una entrada en la lección 2 (ya que su lección 2 puede no haber tenido lugar todavía) - el Progreso solo debe calcularse en la Lección 2.

Estaba tratando de hacer esto bajo una columna calculada, pero no estoy seguro de si una medida sería mejor? Un ejemplo de mis datos está a continuación, he creado una columna de student_lesson que es el identificador de estudiante y el identificador de lección concatenado y luego hizo una columna de índice basado en esto, ya que las evaluaciones se podían introducir en cualquier orden por lo que no quería hacer un índice basado en esto.

La columna Progreso es lo que quiero que se vea (a menos que una medida sea mejor?)

ID de evaluaciónIdentificación del estudianteLección NoPuntuaciónStudent_lessonÍndiceProgreso
11120111
351210012280
42130213
23229022460
653140315
64110416
84210042790

He introducido (la última versión de!) mi código, pero he probado todos los tipos, incluido el uso de la función EARLIER, pero simplemente no puedo obtener la sintaxis correcta.

Progress = 
var index = tbl_Assessment[index]
var students = tbl_Assessment[Student_ID]
var prevrow =
CALCULATE(
    SUMX(tbl_Assessment,tbl_Assessment[Score](
    FILTER(tbl_Assessment,
    tbl_Assessment[index]<index && tbl_Assessment[Student_ID] = students))))
return
CALCULATE(SUMx(tbl_Assessment,tbl_Assessment[Score]),FILTER(tbl_Assessment,tbl_Assessment[Lesson_No]=2)-prevrow)

Muchas gracias por cualquier ayuda!

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @bigrods,

Pruebe esta columna calculada

Process =
IF (
    [Lesson No] = 2,
    CALCULATE (
        SUM ( tbl_Assessment[Score] ),
        FILTER (
            ALLEXCEPT ( 'tbl_Assessment', tbl_Assessment[Student ID] ),
            [Lesson No] = 2
        )
    )
        - CALCULATE (
            SUM ( tbl_Assessment[Score] ),
            FILTER (
                ALLEXCEPT ( 'tbl_Assessment', tbl_Assessment[Student ID] ),
                [Lesson No] = 1
            )
        )
)

1.png

Puede consultar más detalles desde aquí.

Saludos

Stephen Tao

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

7 REPLIES 7
Syndicate_Admin
Administrator
Administrator

No @bigrods,

Pruebe esta columna calculada

Process =
IF (
    [Lesson No] = 2,
    CALCULATE (
        SUM ( tbl_Assessment[Score] ),
        FILTER (
            ALLEXCEPT ( 'tbl_Assessment', tbl_Assessment[Student ID] ),
            [Lesson No] = 2
        )
    )
        - CALCULATE (
            SUM ( tbl_Assessment[Score] ),
            FILTER (
                ALLEXCEPT ( 'tbl_Assessment', tbl_Assessment[Student ID] ),
                [Lesson No] = 1
            )
        )
)

1.png

Puede consultar más detalles desde aquí.

Saludos

Stephen Tao

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

Genial, muchas gracias - esto ha hecho el truco - y gracias a @Mikelytics y @sanalytics por su ayuda también.

Syndicate_Admin
Administrator
Administrator

@bigrods

Usted puede seguir el siguiente patrón también

sanalytics_0-1611500205703.png

Enlace adjunto es el archivo pbix

https://dropfiles.org/WhgoHdhk

saludos

sanéticas

si es su solución, por favor como y aceptarlo como su solución

No @sanalytics

Gracias por la respuesta, soy un par de versiones de PBI detrás, necesito obtener mi TI para actualizar mi versión la próxima semana por lo que por desgracia no puede ver su archivo pbix.

Cuando ejecuto el código, cada valor de la columna Progreso está en blanco: he buscado en el código pero no puedo ver nada que se vea claro, todo se ve bien. Todas las columnas tienen el formato número entero, ¿tiene alguna sugerencia posible? ¡Muchas gracias!

Syndicate_Admin
Administrator
Administrator

No @bigrods,

Creo que tendría sentido resolver esto usando medidas

una medida para la lección uno, una para la lección 2 y otra para el delta. Para también calulcar el progres medio y único utilizaría la función promedio.

E.g.

Lección 1 Puntuación : CALCUATE(AVERAGE(table[lesson[lesson score]),table[lección score]-1)

Lección 2 Puntuación : CALCUATE(AVERAGE(table[lesson[lesson score]),table[lección score]-2)

Progreso á [puntuación de la lección 2] - [puntuación de la lección 1]

Esto crea una tabla (o matriz) con los alumnos como fila y las tres medidas como valores.

Espero que eso ayude.

Saludos

Mikelytics

¿Resolví tu solicitud? Por favor, marque mi puesto como solución.

Apreciamos tus Felicitaciones.

No @Mikelytics

Muchas gracias, que funciona para ponerlos en una matriz (ver más abajo).

¿Es posible poner la medida en un gráfico, es decir, un gráfico de barras que muestra el no. de los estudiantes en cada punto de progreso (10,20,30 etc?) Lo he intentado (abajo), pero con razón no se divide en puntos separados. Disculpas, debería haberlo descubierto antes. ¿Aquí es donde entra en juego la columna calculada?

bigrods_0-1611499888078.png

Muchas gracias

No @bigrods,

tiene razón en este caso, necesita una columna calculada.

Pruebe la siguiente columna calculada:

CALCULATE(Max(tabla[puntuación]),

Filtro (ALL(tabla),

table[ID del estudiante] - EARLIER(table[student ID]) && table[lesson ID] ? 2))


Saludos

Mikelytics

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors