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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Syndicate_Admin
Administrator
Administrator

DAX: calcular la diferencia entre fecha/hora con condiciones

Hola

Tengo datos de llamadas telefónicas con detalles de cada llamada.

Dicko_0-1631010001044.png

Ahora necesito calcular la duración de cada llamada si se completael motivo.

Así que para la llamada con call_id 123 la duración es de 4 minutos.

No tengo ni idea de por dónde empezar...
Realmente me gustaría aprender cómo hacer esto.

1 ACCEPTED SOLUTION
Syndicate_Admin
Administrator
Administrator

@Dicko

Agregue el código siguiente como una nueva columna a la tabla:

Difference = 

VAR __ID = Table2[call_id]
VAR __TIME = Table2[timestamp]
RETURN

IF(
    Table2[reason] = "completed",
    DATEDIFF(
        CALCULATE(
            min(Table2[timestamp]),
            Table2[call_id] = __ID,
            Table2[timestamp] < __TIME,
            REMOVEFILTERS(Table2)
        ),
        __TIME,
        MINUTE
    )
)

Fowmy_0-1631011934817.png



View solution in original post

3 REPLIES 3
Syndicate_Admin
Administrator
Administrator

@Dicko

Agregue el código siguiente como una nueva columna a la tabla:

Difference = 

VAR __ID = Table2[call_id]
VAR __TIME = Table2[timestamp]
RETURN

IF(
    Table2[reason] = "completed",
    DATEDIFF(
        CALCULATE(
            min(Table2[timestamp]),
            Table2[call_id] = __ID,
            Table2[timestamp] < __TIME,
            REMOVEFILTERS(Table2)
        ),
        __TIME,
        MINUTE
    )
)

Fowmy_0-1631011934817.png



¡Gracias! Aprendí algo nuevo 🙂

Syndicate_Admin
Administrator
Administrator

Hola @Dicko ! Prueba esto, podría funcionar:

duration =
var _id = SELECTEDVALUE( Table[call_id] )
var _reason = SELECTEDVALUE( Table[reason] )
var _startcall = CALCULATE( MIN( Table[timestamp] ), FILTER( Table, Table[status] = "created" && Table[call_id] = _id ))
var _endcall = CALCULATE( MAX( Table[timestamp] ), FILTER( Table, Table[status] = "ended" && Table[call_id] = _id ))

return
IF( _reason = "completed",
    DATEDIFF( _startcall, _endcall, MINUTE)
)

¡Espero que esta respuesta resuelva su problema! Si necesita ayuda adicional, por favor etiquéteme en su respuesta.
Si mi respuesta le proporcionó una solución, ¡márquela como una solución ✔️ o dele un kudoe 👍
¡Gracias!

Saludos
Gonçalo Geraldes

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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

Top Solution Authors