Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Syndicate_Admin
Administrator
Administrator

Resumir según el intervalo de tiempo seleccionado

Hola. Estoy teniendo algunos problemas para encontrar una solución al siguiente problema. Agradezco su ayuda y sugerencias.

Tengo una tabla de eventos con 3 columnas como la siguiente

Quiero poder seleccionar un intervalo de tiempo y resumir el número de horas por clase de evento dentro del intervalo seleccionado.

Hora de comienzo

Hora de finalización

Clase de evento

3/4/2021 20:00

3/6/2021 1:00

Clase A

3/5/2021 16:00

3/6/2021 4:00

Clase B

3/6/2021 20:00

3/7/2021 3:00

Clase A

6/3/2021 2:30

6/3/2021 14:30

Clase C

6/23/2021 14:10

6/24/2021 2:10

Clase B

1/16/2021 10:30

1/16/2021 18:45

Clase D

3/5/2021 21:00

3/8/2021 9:00

Clase A

5/21/2021 20:00

5/22/2021 4:15

Clase C

3/5/2021 13:00

3/6/2021 13:00

Clase C

Intervalo seleccionado

3/5/2021 0:00

3/7/2021 0:00

Resultados previstos

Clase de evento

Total de horas

Clase A

56.0

Clase B

12.0

Clase C

36.0

Clase D

0

Cosas a tener en cuenta:

  • El intervalo seleccionado es solo entre días, por lo que el usuario no tendrá la capacidad de seleccionar horas específicas. Estoy abierto a su sugerencia sobre qué tipo de control tengo que usar. Supongo que una cortadora de tiempo.
  • Si la hora de finalización del evento está fuera del rango, no se resumirá
  • Si el evento está parcialmente dentro del intervalo seleccionado, solo agregará el número de horas que están dentro del intervalo.

Realmente no he podido establecer las relaciones de horario o las medidas para obtener los resultados.

Agradezco su ayuda.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

No @andrezmor,

En primer lugar, cree que está contando 12 horas adicionales en la Clase C de acuerdo con sus datos, los valores de C se tienen en consecuencia:

Hora de comienzo

Hora de finalización

Clase de evento

6/3/2021 2:30

6/3/2021 14:30

Clase C

5/21/2021 20:00

5/22/2021 4:15

Clase C

3/5/2021 13:00

3/6/2021 13:00

Clase C

Si su filtro se basa en el 3/5 y 3/7 solo la tercera línea se considera hacerla las 24 horas y no 36, supongo que está contando también las primeras 12 horas desde la primera línea pero no coincide con el filtro.

Pruebe la siguiente medida:

Total Hours = 
VAR temp_table =
    FILTER (
        SUMMARIZE (
            ALL ( 'Table'[Event Class], 'Table'[Start Time], 'Table'[End Time] ),
            'Table'[Event Class],
            'Table'[Start Time],
            'Table'[End Time],
            "@HourDifference",
                DATEDIFF (
                    MAX ( 'Table'[Start Time], MIN ( 'Calendar'[Date] ) ),
                    MIN ( 'Table'[End Time], MAX ( 'Calendar'[Date] ) ),
                    HOUR
                )
        ),
        [@HourDifference] > 0
            && 'Table'[Event Class] IN VALUES ( 'Table'[Event Class] )
    )
RETURN
    COALESCE ( SUMX ( temp_table, [@HourDifference] ), 0 )

MFelix_0-1630422127208.png

View solution in original post

2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

Muchas gracias @MFelix, no pude ver el Hours_Total.pbix porque mi organización funciona con Power Bi Report Server y obtuve una versión de versiones incompatibles. Sin embargo, pude replicar la medida en mi modelo de datos y funcionó perfectamente. Muchas gracias por su ayuda.

Syndicate_Admin
Administrator
Administrator

No @andrezmor,

En primer lugar, cree que está contando 12 horas adicionales en la Clase C de acuerdo con sus datos, los valores de C se tienen en consecuencia:

Hora de comienzo

Hora de finalización

Clase de evento

6/3/2021 2:30

6/3/2021 14:30

Clase C

5/21/2021 20:00

5/22/2021 4:15

Clase C

3/5/2021 13:00

3/6/2021 13:00

Clase C

Si su filtro se basa en el 3/5 y 3/7 solo la tercera línea se considera hacerla las 24 horas y no 36, supongo que está contando también las primeras 12 horas desde la primera línea pero no coincide con el filtro.

Pruebe la siguiente medida:

Total Hours = 
VAR temp_table =
    FILTER (
        SUMMARIZE (
            ALL ( 'Table'[Event Class], 'Table'[Start Time], 'Table'[End Time] ),
            'Table'[Event Class],
            'Table'[Start Time],
            'Table'[End Time],
            "@HourDifference",
                DATEDIFF (
                    MAX ( 'Table'[Start Time], MIN ( 'Calendar'[Date] ) ),
                    MIN ( 'Table'[End Time], MAX ( 'Calendar'[Date] ) ),
                    HOUR
                )
        ),
        [@HourDifference] > 0
            && 'Table'[Event Class] IN VALUES ( 'Table'[Event Class] )
    )
RETURN
    COALESCE ( SUMX ( temp_table, [@HourDifference] ), 0 )

MFelix_0-1630422127208.png

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

November Carousel

Fabric Community Update - November 2024

Find out what's new and trending in the Fabric Community.

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

Top Solution Authors
Top Kudoed Authors