Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
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ón | Identificación del estudiante | Lección No | Puntuación | Student_lesson | Índice | Progreso |
1 | 1 | 1 | 20 | 11 | 1 | |
35 | 1 | 2 | 100 | 12 | 2 | 80 |
4 | 2 | 1 | 30 | 21 | 3 | |
23 | 2 | 2 | 90 | 22 | 4 | 60 |
65 | 3 | 1 | 40 | 31 | 5 | |
6 | 4 | 1 | 10 | 41 | 6 | |
8 | 4 | 2 | 100 | 42 | 7 | 90 |
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!
Solved! Go to Solution.
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
)
)
)
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.
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
)
)
)
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.
Usted puede seguir el siguiente patrón también
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!
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?
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