Forum Discussion

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

Fechas consecutivas con datos

Hola

Necesito calcular los días consecutivos de enfermedad a nivel de empleado, enumerar los empleados con más de 7 días, 15 días, 30 días y 3 meses de enfermedad consecutiva. Y además, permite filtrar esos grupos en función de otros campos (por ejemplo, Departamento, Función, Posición, Ubicación).

¿Alguien puede ayudar?

¿Puede compartir alguna idea, mejores prácticas, tutoriales, por favor?

  • En ella, @karo

    Basándome en su escenario, hice un ejemplo simple para contar los días de ausencia consecutivos. Puede filtrar aún más los datos en función de los nuevos campos 'Máximo de ausente consecutivo'.

    Códigos relacionados de columnas calculadas:

    flag = IF('Table1'[Statue]="absent",1,0) 
    Consecutive absent =
    SWITCH (
        TRUE (),
        Table1[flag] = 0, 0,
        CALCULATE (
            COUNTROWS ( Table1 ),
            FILTER (
                ALL ( Table1 ),
                Table1[flag] = 0
                    && Table1[Name] = EARLIER ( Table1[Name] )
                    && Table1[Date] < EARLIER ( Table1[Date] )
            )
        ) = 0,
            CALCULATE (
                SUM ( Table1[flag] ),
                FILTER (
                    ALL ( Table1 ),
                    Table1[Name] = EARLIER ( Table1[Name] )
                        && Table1[Date] <= EARLIER ( Table1[Date] )
                )
            ),
        CALCULATE (
            SUM ( Table1[flag] ),
            FILTER (
                ALL ( Table1 ),
                Table1[Name] = EARLIER ( Table1[Name] )
                    && Table1[Date]
                        > CALCULATE (
                            MAX ( Table1[Date] ),
                            FILTER (
                                ALL ( Table1 ),
                                Table1[flag] = 0
                                    && Table1[Name] = EARLIEST ( Table1[Name] )
                                    && Table1[Date] < EARLIEST ( Table1[Date] )
                            )
                        )
                    && Table1[Date] <= EARLIER ( Table1[Date] )
            )
        )
    )
    

    Saludos
    Equipo de soporte de la comunidad _ Eason
    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

4 Replies

  • En ella, @karo

    Basándome en su escenario, hice un ejemplo simple para contar los días de ausencia consecutivos. Puede filtrar aún más los datos en función de los nuevos campos 'Máximo de ausente consecutivo'.

    Códigos relacionados de columnas calculadas:

    flag = IF('Table1'[Statue]="absent",1,0) 
    Consecutive absent =
    SWITCH (
        TRUE (),
        Table1[flag] = 0, 0,
        CALCULATE (
            COUNTROWS ( Table1 ),
            FILTER (
                ALL ( Table1 ),
                Table1[flag] = 0
                    && Table1[Name] = EARLIER ( Table1[Name] )
                    && Table1[Date] < EARLIER ( Table1[Date] )
            )
        ) = 0,
            CALCULATE (
                SUM ( Table1[flag] ),
                FILTER (
                    ALL ( Table1 ),
                    Table1[Name] = EARLIER ( Table1[Name] )
                        && Table1[Date] <= EARLIER ( Table1[Date] )
                )
            ),
        CALCULATE (
            SUM ( Table1[flag] ),
            FILTER (
                ALL ( Table1 ),
                Table1[Name] = EARLIER ( Table1[Name] )
                    && Table1[Date]
                        > CALCULATE (
                            MAX ( Table1[Date] ),
                            FILTER (
                                ALL ( Table1 ),
                                Table1[flag] = 0
                                    && Table1[Name] = EARLIEST ( Table1[Name] )
                                    && Table1[Date] < EARLIEST ( Table1[Date] )
                            )
                        )
                    && Table1[Date] <= EARLIER ( Table1[Date] )
            )
        )
    )
    

    Saludos
    Equipo de soporte de la comunidad _ Eason
    Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.

  • @v-easonf-msft

    Estaba trabajando en base a su respuesta y casi estoy allí, pero descubrí un problema. Los días consecutivos no son correctos cuando tenemos un tipo específico de brecha en los datos (como agregar a su conjunto de datos dos registros: {e; 2022-03-03; ausente;1}, {e; 2022-01-01;ausente;1}. ¿Alguna pista sobre cómo cubrir también este escenario?