cancel
Showing results for 
Search instead for 
Did you mean: 
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.

View solution in original post

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.

View solution in original post

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
PBI User Groups

Welcome to the User Group Public Preview

Check out new user group experience and if you are a leader please create your group!

MBAS on Demand

2021 Release Wave 2 Plan

Power Platform release plan for the 2021 release wave 2 describes all new features releasing from October 2021 through March 2022.

July 2021 Update 768x460.png

Check it out!

Click here to read more about the July 2021 Updates

Top Solution Authors