Filtrar valores igual o superior

Hola, a ver me pueden ayudar:

Tengo dos tablas para controlar la entrega y recepción de unas llaves, el Pk es el código de la llave y necesito calcular la diferencia de tiempo entre la entrega de esa llave y su devolución (a veces no devuelve la llave el mismo al que se le entrega), pero necesito saber la diferencia de tiempo entre la entrega y devolución.

Entrega
IdLlave Usuario FechaHora
6501 Pepe 01/01/2020 12:55
6605 Luis 01/01/2020 11:50
Devolucion
IdLlave Usuario FechaHora
6501 Luis 01/01/2020 15:30
6605 Manuel 02/01/2020 09:50
     

 

He probado generando esta consulta per solo funciona si el campo fechahora es el mismo en ambas tablas.

 

Resultado = SELECTCOLUMNS(Recogida; "idLlave"; Recogida[IdLlave]; "FechaRec"; Recogida[FechaHora]; "UsuarioRec"; Recogida[Usuario]; "FechaDev"; LOOKUPVALUE(Devolucion[FechaHora];Devolucion[FechaHora];Recogida[FechaHora]))

 

Gracias,

Hola Antoni,

lo que comentas parece bastante sencillo: basta restar las dos fechas. Algo como:

Resultado = 
    SELECTCOLUMNS(
        Recogida;
        "IdLlave"; Recogida[IdLlave];
        "Tiempo"; FORMAT(RELATED('Devolución'[Fecha]) - Recogida[Fecha];"HH:MM")
    )

Aquí estoy generando la lista de llaves y los tiempos entre la devolución y la recogida (por supuesto, no estoy contemplando el caso de que no se haya entregado todavía, etc.). Como ves, basta acceder al otro campo con RELATED y restar...

Saludos

Raúl

Hola Raúl,

Gracias por tu respuesta, lo que sucede es que en las tablas hay más entregas y devoluciones de la misma llave en momentos distintos...

idLlave Usuario FechaHora
6501 Pepe 01/01/2020 11:50
6402 Luis 01/01/2020 15:10
6501 Jose 01/01/2020 16:40

etc..

Y en Devlouciones lo mismo, la llave 6501 puede ser retornada el mismo día o el siguiente, o sea que debería de buscar la llave entregada en la tabla de devoluciuones con fechaHora igual o posterior y esa sería su pareja, me explico bien?

 

Saludos y gracias,

Hola Antoni,

Así, a ojo, la solución dependerá de algunas decisiones que no me quedan claras: ¿quieres una medida o llevar el resultado a una tabla? ¿quieres obtener la duración para la última entrega de cada llave? ¿o para cada una de las entregas de cada llave? y, en este último caso ¿cómo identificas cada entrega?

En todo caso, aquí tienes una idea sobre la que trabajar: he creado una columna calculada en la tabla de recogidas que muestra la hora de devolución para cada entrega. Básicamente lo que hago es, dada una llave (con una hora de entrega), filtro la tabla de devoluciones para que solo muestre las de esa llave, considero solo las horas posteriores a la entrega, y me quedo con la hora más baja (es decir, la siguiente), el código es éste:

Fecha recogida = 
    MINX(
        FILTER(
            'Devolución';
            'Devolución'[IdLlave] = Recogida[IdLlave] && 'Devolución'[Fecha] >= Recogida[Fecha]
        );
        'Devolución'[Fecha]
    )

Aquí tienes la tabla de devoluciones que me he inventado:

Devoluciones

Y aquí tienes el resultado sobre una tabla de entregas de juguete:

Recogidas

Espero que te sirva para llegar a la solución que buscas

Un saludo

Daniel

Hola Daniel,

Y lo que necesito será la diferencia de tiempo entre cada entrega y devolución, además de si la devuelve el mismo usuario que la recoge. 

Muchísimas gracias por tu aportación!, voy a investigar un poco lo que me comentas y te informo.

 

Antoni.

 

 

Por supuesto, si optas por el enfoque de la tabla calculada, puedes calcular la duración muy fácilmente con

Duración = DATEDIFF(Recogida[Fecha];Recogida[Fecha recogida];SECOND)

Duración

Saludos

Daniel

Enviado por Antoni el Vie, 28/02/2020 - 13:40