Check your eligibility for this 50% exam voucher offer and join us for free live learning sessions to get prepared for Exam DP-700.
Get StartedDon't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.
Hola, tengo una tabla de hechos que registra los estados de los camiones en un circuito minero. Los camiones cambian de estado de operación, espera, descanso para el almuerzo, etc. La hora de inicio y finalización de que el camión está en este estado es una fila en la tabla.
Necesito reducir el grano de esta tabla a 15 minutos fijos para un informe que representa el intervalo de los últimos 15 minutos. Así que si una fila de la tabla representaba el estado de un camión como "en funcionamiento" durante 60 minutos, entonces cambiar el grano a 15 minutos verá cuatro filas. Obviamente se vuelve un poco más complicado cuando el estado pasa por encima de los límites del intervalo.
¿Alguna idea/patrón para reducir el grano?
(Sí, lo sé... no es un ejemplo de finanzas derecho !)
Solved! Go to Solution.
@frano72 - Yo leería ese blog. Aquí hay una solución sólo para usted como lo prometí. Consulte el archivo PBIX adjunto a continuación sig. Esta tabla ha creado:
Table 2 =
VAR __Min = MIN('Table'[StartTimeUTC])
VAR __Max = MAX('Table'[EndTimeUTC])
RETURN
GENERATESERIES(__Min,__Max,1/24/60*15)
Y luego esta columna en esa tabla:
Column = MAXX(FILTER('Table',[StartTimeUTC]>=[Value] && [EndTimeUTC]>=[Value]),[Status Name])
Me encantan las operaciones de las cosas más. OTIF, MTBF, etc. Desearía haber encajado más en mi libro DAX Cookbook. Puedes ver los que hice incluyen aquí: https://github.com/gdeckler/DAXCookbook Capítulo 9.
@frano72 - Usted debe ser capaz de utilizar una variación de Entradas Abiertas para lograr esto. Entradas abiertas es por hora o día creo que, pero puede soportar cualquier nivel de granularidad de tiempo. Si puede publicar datos de muestra, puedo preparar una versión para usted. Por favor, me si respondes.
https://community.powerbi.com/t5/Quick-Measures-Gallery/Open-Tickets/m-p/409364#M147
Para que conste, los problemas de operaciones son mucho más interesantes para mí que los financieros!!
Gracias @Greg_Deckler - Voy a echar un vistazo esta mañana en el ejemplo de entradas.
[... tal vez debería blog sobre ejemplos de operaciones para reequilibrar el peso de los ejemplos de finanzas pbi del mundo !]
Aquí hay un enlace a un subconjunto de datos en Excel
https://www.dropbox.com/s/hczr2wxxh28pvpg/TruckStatus.xlsx?dl=0
Aquí hay un subconjunto aún más.
StartTimeUTC | EndTimeUTC | ShiftIndex | Duración | ID de equipo | StatusID | Nombre de estado |
31/07/2020 20:00 | 1/08/2020 0:53 | 202008011 | 17614 | 53 | 418 | Listo |
1/08/2020 0:53 | 1/08/2020 1:38 | 202008011 | 2680 | 53 | 420 | Retraso |
1/08/2020 1:38 | 1/08/2020 6:38 | 202008011 | 18030 | 53 | 419 | Espera |
1/08/2020 6:38 | 1/08/2020 7:35 | 202008011 | 3385 | 53 | 418 | Listo |
1/08/2020 7:35 | 1/08/2020 8:00 | 202008011 | 1491 | 53 | 420 | Retraso |
Básicamente hay dos turnos de 12 horas por día y esto se representa con la columna ShiftIndex. El último dígito representa de noche o de día. Así que la tabla anterior es para el 1 de agosto de 2020, turno de día. Sólo he mostrado una pieza de equipo.
Notarás que la suma de la Duración es de 12 horas (en segundos).
Así que el desafío es dividir estas cinco filas que representan "estados" de camiones durante los 12 turnos en cubos de 15 minutos y tienen el total para cada tipo de estado.
Así que la salida sería algo como esto. Cada fila es ahora de 15 minutos (900 segundos).
Tiene que haber alguna lógica de fecha en algún lugar cuando el estado cambia dentro del bucket de 15 minutos.
StartTimeUTC | ShiftIndex | Duración | ID de equipo | Status_Ready | Status_Delay | Status_Standby |
31/07/2020 20:00 | 202008011 | 900 | 53 | 900 | 0 | 0 |
31/07/2020 20:15 | 202008011 | 900 | 53 | 900 | 0 | 0 |
etcetera |
(el problema es un poco más que esto, pero lo han destilado hasta la forma más simple, que una vez resuelto puedo escalarlo a la más compleja).
¡Gracias!
@frano72 - Yo leería ese blog. Aquí hay una solución sólo para usted como lo prometí. Consulte el archivo PBIX adjunto a continuación sig. Esta tabla ha creado:
Table 2 =
VAR __Min = MIN('Table'[StartTimeUTC])
VAR __Max = MAX('Table'[EndTimeUTC])
RETURN
GENERATESERIES(__Min,__Max,1/24/60*15)
Y luego esta columna en esa tabla:
Column = MAXX(FILTER('Table',[StartTimeUTC]>=[Value] && [EndTimeUTC]>=[Value]),[Status Name])
Me encantan las operaciones de las cosas más. OTIF, MTBF, etc. Desearía haber encajado más en mi libro DAX Cookbook. Puedes ver los que hice incluyen aquí: https://github.com/gdeckler/DAXCookbook Capítulo 9.
@frano72 - ¡Avísame cuando empieces tu blog! 🙂
Recuerde que un campo DateTime está realmente en formato decimal con los enteros como los días y las fracciones como las horas y minutos, etc.
El bucket es muy fácil al aplicar algunas matemáticas simples
Cubos de media hora:
@frano72, no muy claro.
Cree una tabla de tiempo y tenga un cubo de 15 Min en eso y use eso
Tabla de tiempo - https://kohera.be/blog/power-bi/how-to-create-a-time-table-in-power-bi-in-a-few-simple-steps/
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.