Calcule la diferencia horaria entre fechas en diferentes tablas.

Un usuario Pregunto ✅

Daveed1973

No estoy seguro de si esto puede ser más fácil en SQL o Power BI, pero esto es lo que necesito para poder lograrlo.

Tengo dos tablas diferentes en el escritorio de BI, una tiene una lista de trabajos de eliminación de productos y la otra tiene una lista de fechas para los productos cuando se limpiaron. Entonces, por ejemplo, un producto se retira de un sitio y luego se limpia. Por lo tanto, habrá una fecha de eliminación y también una fecha en la que se limpió.

Para cada una de estas eliminaciones de los productos (estos tienen números de serie únicos), necesito la próxima fecha de limpieza y calculo cuánto tiempo tardaron en limpiarse los productos después de que se eliminaron.

La tabla 1 para las mudanzas tendrá una estructura como esta …

Número de serie, tipo de producto, fecha de eliminación

111111 Producto 1 14/08/2018

111111 Producto 1 17/08/2018

222222 Producto 2 08/11/2018

333333 Producto 3 16/08/2018

La tabla 2 para la información de limpieza se verá así …

Número de serie, tipo de producto, fecha de limpieza

111111 Producto 1 15/08/2018

111111 Producto 1 20/08/2018

222222 Producto 2 14/08/2018

333333 Producto 3 18/08/2018

Los resultados de esto me mostrarían algo como esto para que luego pueda calcular los promedios para cada tipo de producto.

Número de serie, tipo de producto, días para limpiar

111111 Producto 1 1

111111 Producto 1 3

222222 Producto 2 3

333333 Producto 3 2

¿Cómo puedo tomar el número de serie y la fecha de la tabla 1 y encontrar la próxima fecha de limpieza para el mismo número de serie en la tabla 2 para que funcione?

Cualquier ayuda sería apreciada.

Daveed1973

En respuesta a v-lili6-msft

Terminé teniendo que hacer esto en SQL en su lugar, ya que descubrí que Power BI estaba luchando con la cantidad de datos. Lo hice usando una APLICACIÓN EXTERIOR similar a esta.

DESDE tblRemovals r
APLICAR EXTERIOR (SELECCIONE EL PRIMER 1 DateCleaned FROM tblCleans c DONDE c.SerialNumber = r.SerialNumber AND DateCleaned> = DateRemoved ORDER BY DateCleaned) AS cln

hola @ Daveed1973

¿Podría decirme si su problema ha sido resuelto? Si es así, ¿podría marcar las respuestas útiles como Respondidas?

Atentamente,

Lin

Daveed1973

En respuesta a v-lili6-msft

Terminé teniendo que hacer esto en SQL en su lugar, ya que descubrí que Power BI estaba luchando con la cantidad de datos. Lo hice usando una APLICACIÓN EXTERIOR similar a esta.

DESDE tblRemovals r
APLICAR EXTERIOR (SELECCIONE EL PRIMER 1 DateCleaned FROM tblCleans c DONDE c.SerialNumber = r.SerialNumber AND DateCleaned> = DateRemoved ORDER BY DateCleaned) AS cln

Hola,@Daveed1973

Si hay varias filas del mismo producto en la tabla 1, ¿cómo hacer coincidir la fecha de limpieza en la tabla 2?

Entonces hay dos soluciones:

1.

Si coincide con la fecha que es la última fecha después de la fecha de eliminación, puede usar esto para encontrar la fecha de limpieza:

Min clean date = CALCULATE(MIN(Table2[Clean Date]),FILTER(Table2,Table1[Serial Number]=Table2[Serial Number]&&Table1[ Product Type]=Table2[ Product Type]&&Table2[Clean Date]>Table1[ Removal Date]))

luego use la función dateiff para calcular los días

2.

Si No coincide con la fecha posterior a la última eliminación fecha, puede agregar una columna de índice para dos tablas

y luego use la función lookupvalue para encontrar la fecha de limpieza:

14.PNG

Clean date = LOOKUPVALUE(Table2[Clean Date],Table2[Index],Table1[Index])

luego use la función dateiff para calcular días como este

Days to Clean = DATEDIFF(Table1[ Removal Date],Table1[Clean date],DAY)

Resultado:

15.PNG

aquí está pbix, inténtelo.

https: //www.dropbox.com/s/z0mdpqqm8hlsiwy/Calculate%20time%20difference%20between%20dates%20in%20dif …

Atentamente,

Lin

LivioLanzo

Tienes diferentes formas de hacerlo

una solución puede ser agregar una columna de cálculo en la tabla de eliminación para obtener la próxima fecha de limpieza y luego hacer la diferencia

Próxima fecha de limpieza =
CALCULAR (
MIN ( Limpia[Clean Date] ),
Limpia[Product Type] = MÁS TEMPRANO ( Mudanzas[Product Type] ),
Limpia[Serial Number] = MÁS TEMPRANO ( Mudanzas[Serial Number] ),
Limpia[Clean Date] > MÁS TEMPRANO ( Mudanzas[Removal Date] )
)

Daveed1973

En respuesta a LivioLanzo

Desafortunadamente, parece que tengo problemas con esto y supongo que se debe a la cantidad de filas en las tablas, alrededor de 150k en cada una.

Tan pronto como agrego la columna calculada según su sugerencia, el pbix simplemente se muele para detener el intento de actualizar y luego aparece un error que dice que no hay suficiente memoria para completar la operación.

pmeyp

En respuesta a Daveed1973

Hola @ Daveed1973,

¿Terminó sin usar PowerBI más? Tenemos grandes grupos de datos y parece que superaremos a PowerBI con sus limitaciones actuales en unos 4-5 años. ¡Dime qué solución estás usando actualmente si puedes! ¡Apreciado enormemente!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *