Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
5 years ago
Solved

Generar un endDateTime basado en createDateTime

Hola a todos

Tengo una relación que contiene estados de un proceso. Sólo se me da un createDateTime y necesito hacer alguna visualización que cuente los estados que terminaron hoy.

Mis datos se ven así:

JoepBI_0-1614861582202.png

La suposición es que, si la columna IsCurrentStatus no es igual a 0, createDateTime siguiente debe convertirse en endDateTime para esa fila. Y esto debe hacerse para cada ProcessId individualmente.

Nota: He mostrado el createDateTimes ordenado por processId en orden ascendente para demostrar fácilmente el problema, pero esto no es un hecho en mi conjunto de datos.

Ya es un gran agradecimiento de antemano para el héroe que puede resolver este 🙂

Lo mejor, Joep

  • No @JoepBI,

    Según sus necesidades, hice la siguiente prueba, las medidas creadas se agrupan según Processid y satisfacen si la columna IsCurrentStatus NO es igual a 0, createDateTime siguiente debe convertirse en endDateTime para esa fila. Consulte la captura de pantalla a continuación:

    endDateTime = 
    VAR cur_index =
        MIN ( 'Table'[Index] ) + 1
    VAR pre_index =
        CALCULATE (
            MAX ( 'Table'[Index] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[processID] = MAX ( 'Table'[processID] )
                    && 'Table'[Index] <= cur_index
            )
        )
    RETURN
        IF (
            MAX ( 'Table'[lsCurrentStatus] ) = 1,
            BLANK (),
            CALCULATE (
                MIN ( 'Table'[createDateTime] ),
                FILTER (
                    ALL ( 'Table' ),
                    MAX ( 'Table'[processID] ) = 'Table'[processID]
                        && 'Table'[Index] = pre_index
                )
            )
        )

    v-henryk-mstf_0-1615365370556.png

    Aquí está el archivo pbix de ejemplo.

    Si el problema aún no se ha resuelto, proporcione información detallada del error y hágamelo saber inmediatamente. Esperamos su respuesta.

    Saludos
    Henry

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

5 Replies

  • @JoepBI , Crear una nueva columna para la hora de finalización

    nueva columna =
    var _1 = mix(filter(Table, [processId] = earlier([processId]) && [statusId]> earlier([statusId])),[statusId])
    devolución
    if([statusId]<> 0 , _1, blank())

    • Syndicate_Admin's avatar
      Syndicate_Admin
      Icon for Administrator rankAdministrator

      Gracias por su respuesta rápida y útil @amitchandak! ¿Qué hace la función de mezcla? Mi editor de consultas PowerBI devuelve "No se puede encontrar el nombre 'mix'. ' mix' no es una función.". Googling para la función de mezcla tampoco devolvió ningún resultado útil..

      Mejor

      Joep

      • Syndicate_Admin's avatar
        Syndicate_Admin
        Icon for Administrator rankAdministrator

        @JoepBI , Lo siento, error tipográfico (MinX)

        nueva columna =
        var _1 = minx(filter(Table, [processId] = anterior([processId]) && [statusId]> anterior([statusId])),[statusId])
        devolución
        if([statusId]<> 0 , _1, blank())

  • No @JoepBI,

    Según sus necesidades, hice la siguiente prueba, las medidas creadas se agrupan según Processid y satisfacen si la columna IsCurrentStatus NO es igual a 0, createDateTime siguiente debe convertirse en endDateTime para esa fila. Consulte la captura de pantalla a continuación:

    endDateTime = 
    VAR cur_index =
        MIN ( 'Table'[Index] ) + 1
    VAR pre_index =
        CALCULATE (
            MAX ( 'Table'[Index] ),
            FILTER (
                ALL ( 'Table' ),
                'Table'[processID] = MAX ( 'Table'[processID] )
                    && 'Table'[Index] <= cur_index
            )
        )
    RETURN
        IF (
            MAX ( 'Table'[lsCurrentStatus] ) = 1,
            BLANK (),
            CALCULATE (
                MIN ( 'Table'[createDateTime] ),
                FILTER (
                    ALL ( 'Table' ),
                    MAX ( 'Table'[processID] ) = 'Table'[processID]
                        && 'Table'[Index] = pre_index
                )
            )
        )

    v-henryk-mstf_0-1615365370556.png

    Aquí está el archivo pbix de ejemplo.

    Si el problema aún no se ha resuelto, proporcione información detallada del error y hágamelo saber inmediatamente. Esperamos su respuesta.

    Saludos
    Henry

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