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

Columna calculada: RankX con filtro

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:

ActivityStartStudentCourseStageUnitgradoNúmero De Intento
2021-01-01 07:00 SOYRicCourse1Stage1Unit1U1
2021-01-02 23:00RicCourse1Stage1Unit1I
2021-01-03 09:00 SOYRicCourse1Stage1Unit1S2
2021-01-04 06:00 SOYJonCourse1Stage1Unit1
2021-01-05 15:00JonCourse1Stage1Unit1S1
2021-01-07 08:30 SOYJonCourse1Stage1Unit2S1

A continuación se muestra un archivo PBIX de ejemplo:

https://drive.google.com/file/d/1yKoQ7_EjUUPXJjXlMjXzLPtwPjtCmabn/view?usp=sharing

¡gracias!

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

No @RicFischer

AttemptNumberCol = 
CALCULATE (
    COUNT ( AttemptNumber[ActivityStart] ),
    AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] ),
    AttemptNumber[Grade] IN { "S", "U" },
    ALLEXCEPT ( AttemptNumber, AttemptNumber[StudentCourseStageUnit] )
)

SU18_powerbi_badge

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.

View solution in original post

@RicFischer

¿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" }
            )
        )

SU18_powerbi_badge

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.

View solution in original post

6 REPLIES 6
Syndicate_Admin
Administrator
Administrator

@RicFischer

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

SU18_powerbi_badge

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.

Syndicate_Admin
Administrator
Administrator

No @RicFischer

AttemptNumberCol = 
CALCULATE (
    COUNT ( AttemptNumber[ActivityStart] ),
    AttemptNumber[ActivityStart] <= EARLIER ( AttemptNumber[ActivityStart] ),
    AttemptNumber[Grade] IN { "S", "U" },
    ALLEXCEPT ( AttemptNumber, AttemptNumber[StudentCourseStageUnit] )
)

SU18_powerbi_badge

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.

@RicFischer

¿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" }
            )
        )

SU18_powerbi_badge

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?

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