Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
hola
Tengo una tabla con lo siguiente que tiene fecha y hora (ActivityStart), calificación (Grado) y un campo concatenado (StudentCourseStageUnit). Necesito clasificar cada StudentCourseStageUnit idéntico donde Grade es SOLO 'S' o 'U' (e ignorando por completo el espacio en blanco o 'I') clasificado por ActivityStart.
Me gustaría esto como una columna calculada.
Este es un ejemplo simplista:
ActivityStart | StudentCourseStageUnit | grado | Número De Intento |
2021-01-01 07:00 SOY | RicCourse1Stage1Unit1 | U | 1 |
2021-01-02 23:00 | RicCourse1Stage1Unit1 | I | |
2021-01-03 09:00 SOY | RicCourse1Stage1Unit1 | S | 2 |
2021-01-04 06:00 SOY | JonCourse1Stage1Unit1 | ||
2021-01-05 15:00 | JonCourse1Stage1Unit1 | S | 1 |
2021-01-07 08:30 SOY | JonCourse1Stage1Unit2 | S | 1 |
A continuación se muestra un archivo PBIX de ejemplo:
https://drive.google.com/file/d/1yKoQ7_EjUUPXJjXlMjXzLPtwPjtCmabn/view?usp=sharing
¡gracias!
Solved! Go to Solution.
No @RicFischer
AttemptNumberCol =
CALCULATE (
COUNT ( AttemptNumber[ActivityStart] ),
AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] ),
AttemptNumber[Grade] IN { "S", "U" },
ALLEXCEPT ( AttemptNumber, AttemptNumber[StudentCourseStageUnit] )
)
|
Por favor, acepte la solución cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles. Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc. |
¿Cuánto tiempo? Prueba esto
Col =
COUNTROWS (
FILTER (
ALL (
AttemptNumber[ActivityStart],
AttemptNumber[Grade],
AttemptNumber[StudentCourseStageUnit]
),
AttemptNumber[StudentCourseStageUnit]
= EARLIER ( AttemptNumber[StudentCourseStageUnit] )
&& AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] )
&& AttemptNumber[Grade] IN { "S", "U" }
)
)
|
Por favor, acepte la solución cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles. Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc. |
Se ve bien. De hecho, me di cuenta de que el otro día faltaba la comprobación inicial y me sorprendió que estuviera funcionando en todos los casos...
|
Por favor, acepte la solución cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles. Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc. |
No @RicFischer
AttemptNumberCol =
CALCULATE (
COUNT ( AttemptNumber[ActivityStart] ),
AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] ),
AttemptNumber[Grade] IN { "S", "U" },
ALLEXCEPT ( AttemptNumber, AttemptNumber[StudentCourseStageUnit] )
)
|
Por favor, acepte la solución cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles. Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc. |
Funcionó en mis datos de muestra, pero está tomando bastante tiempo para que funcione en mis datos reales que tiene casi 500,000 filas.
¿Cuánto tiempo? Prueba esto
Col =
COUNTROWS (
FILTER (
ALL (
AttemptNumber[ActivityStart],
AttemptNumber[Grade],
AttemptNumber[StudentCourseStageUnit]
),
AttemptNumber[StudentCourseStageUnit]
= EARLIER ( AttemptNumber[StudentCourseStageUnit] )
&& AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] )
&& AttemptNumber[Grade] IN { "S", "U" }
)
)
|
Por favor, acepte la solución cuando haya terminado y considere dar un pulgar hacia arriba si las publicaciones son útiles. Póngase en contacto conmigo en privado para obtener soporte con cualquier necesidad de BI a mayor escala, tutoría, etc. |
La versión CALCULATE de la solución se quedó sin memoria en más de 70 GB utilizados.
Countrows es mucho más rápido (unos segundos en lugar de más de 10 minutos y una condición de memoria insuficiente). Pero, necesita un poco de refinamiento. Resulta que si un estudiante obtuvo una S o una U en un intento anterior de la misma unidad, entonces una unidad cancelada (una sin calificación) o una unidad interrumpida (Grado = "I") se le da el mismo número de intento que el último número de intento dado.
He actualizado mis datos de ejemplo pbix para incluir un ejemplo de dónde está sucediendo. (La fórmula está en la última columna, "AttemptNumber". Puedes encontrarlo en el enlace original en mi OP o aquí:
https://drive.google.com/file/d/1yKoQ7_EjUUPXJjXlMjXzLPtwPjtCmabn/view?usp=sharing
El nuevo estudiante es Rob. Sus valores son idénticos a donde esto está sucediendo en mis datos reales. (ActivityStart y Grade se copiaron de datos reales a datos de muestra y la fórmula produjo el mismo falso positivo).
Creo que acabo de responder a mi pregunta:
AttemptNumber =
IF(AttemptNumber[Grade] IN { "S", "U" },
COUNTROWS (
FILTER (
ALL (
AttemptNumber[ActivityStart],
AttemptNumber[Grade],
AttemptNumber[StudentCourseStageUnit]
),
AttemptNumber[StudentCourseStageUnit]
= EARLIER ( AttemptNumber[StudentCourseStageUnit] )
&& AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] )
&& AttemptNumber[Grade] IN { "S", "U" }
)
)
)
¿Parece razonable? Cualesquier problemas potenciales con aquel, @AlB?