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

Don'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.

Reply
frano72
Helper IV
Helper IV

Baja el grano de una tabla informativa en cubos de 15 minutos

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 !)

1 ACCEPTED 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.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

View solution in original post

7 REPLIES 7
Greg_Deckler
Super User
Super User

@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!!



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

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.

StartTimeUTCEndTimeUTCShiftIndexDuraciónID de equipoStatusIDNombre de estado
31/07/2020 20:001/08/2020 0:532020080111761453418Listo
1/08/2020 0:531/08/2020 1:38202008011268053420Retraso
1/08/2020 1:381/08/2020 6:382020080111803053419Espera
1/08/2020 6:381/08/2020 7:35202008011338553418Listo
1/08/2020 7:351/08/2020 8:00202008011149153420Retraso

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.

StartTimeUTCShiftIndexDuraciónID de equipoStatus_ReadyStatus_DelayStatus_Standby
31/07/2020 20:002020080119005390000
31/07/2020 20:152020080119005390000
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.



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

@Greg_Deckler - impresionante compañero de trabajo - gracias !!!!!!!

@frano72 - ¡Avísame cuando empieces tu blog! 🙂



Follow on LinkedIn
@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
Power BI Cookbook Third Edition (Color)

DAX is easy, CALCULATE makes DAX hard...

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:

ts_half de la marca de datos int([Timestamp]*48)/48
Cubos de un cuarto de hora:
ts_quart de la marca de datos int([Timestamp]*96)/96
etcetera.
amitchandak
Super User
Super User

@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/

Join us as experts from around the world come together to shape the future of data and AI!
At the Microsoft Analytics Community Conference, global leaders and influential voices are stepping up to share their knowledge and help you master the latest in Microsoft Fabric, Copilot, and Purview.
️ November 12th-14th, 2024
 Online Event
Register Here

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!

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

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

Top Solution Authors
Top Kudoed Authors