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

Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!

Reply
joep78
Helper III
Helper III

calcular la tasa de ocupación en función de la hora de inicio y finalización

Hola a todos

Actualmente estoy trabajando en una solución para obtener información sobre la tasa de ocupación de nuestras salas de reuniones, basada en la hora de inicio y finalización. Mi desafío es que si solo estoy usando mi fecha de inicio, mi reserva solo cuenta en esa hora específica. Si una reserva es de más de una hora, la siguiente hora parece estar disponible.

datos (ejemplo simple) es el siguiente:

HabitaciónFechahora de inicioen time
1.3901/05/202010:00:0012:00:00
1.4001/05/202011:00:0013:00:00
1.4201/05/202009:00:0015:00:00

el resultado debe ser el siguiente:

horacantidad de reservas en este período de tiempo
09:00:001
10:00:002
11:00:003
12:00:002
13:00:001
14:00:001
15:00:001

¿Cómo debo tener en cuenta la hora de finalización también en mi medida para saber que la habitación está reservada si la hora de finalización no es exceded?

Gracias de antemano por una respuesta!

saludos

Joep

1 ACCEPTED SOLUTION
AllisonKennedy
Super User
Super User

¿Tiene una tabla de fecha/hora separada? Si no es así, deberá crear uno con cada hora listada para cada día. Si necesita ayuda con esto, responda y puedo proporcionar más detalles. Suponiendo que ya tiene la tabla de fecha y hora:

Utilice la siguiente fórmula para agregar una columna a la tabla de fechas:

Ocupación ?
COUNTROWS (
FILTRO (
Reuniones
Y (
Reuniones[Hora de inicio] <-DimTime[Hora],
Reuniones[Hora de finalización] > DimTime[Tiempo]
)
)
)

¿Este post ha resuelto tu problema? Por favor, márquelo como una solución para que otros puedan encontrarlo rápidamente y para que la comunidad sepa que su problema ha sido resuelto.


Si has encontrado este post útil, por favor, dale a Kudos.

Trabajo como instructor y consultor para Microsoft 365, especializado en Power BI y Power Query.

https://sites.google.com/site/allisonkennedycv


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

View solution in original post

9 REPLIES 9
AllisonKennedy
Super User
Super User

@joep78 No puedo enviar un mensaje privado en este momento, por lo que en respuesta a su consulta para poder filtrar los datos de ocupación por ubicación de la sala de reuniones, etc:

Tendrá que crearlo como una medida, no como una columna.

He creado columnas 'clave' en el Editor de Power Query para cada uno de los campos de fecha y hora simplemente porque encuentro que Power BI hace cosas divertidas con el tipo de datos DateTime al intentar relacionarlas entre sí.

En el Editor de Power Query, las columnas de clave se pueden crear mediante Agregar columna > Columna personalizada y la fórmula:

•DateTime.ToText([Fecha de finalización],"yyyyMMddHHmm")

reemplace [Fecha de finalización] por las columnas DateTime en la fecha y hora de inicio y finalización en la tabla de reuniones y también para datetime en la tabla datetime.

Cierre y cargue los cambios y, a continuación, en el informe, cree las siguientes MEDIDAS:

Ocupado s CALCULATE(COUNT(Meetings[Room]),FILTER(Meetings,Meetings[StartKey]<-SELECTEDVALUE('Time'[Key])
&&Reuniones[EndKey]>SELECTEDVALUE('Time'[Key])
))
Ocupación diaria promedio: CALCULATE(AVERAGEX('Time',[Occupied]))
La medida [Ocupada] solo funcionará si incluye la fecha y hora exactas en la visualización de la tabla/matriz, por lo que [Ocupación diaria media] le permite resumir los datos en todos los días o solo en días específicos de la semana.
Dado que es una medida, los filtros que pongaen en Ubicación, Nivel, etc. deben llevar a través de la tabla/matriz en la que utilice la medida.
¿Tiene sentido? Dale felicitaciones si funciona.

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

El problema ahora con la medida Ocupado es que solo muestra un valor durante la hora de inicio, pero no hay valor entre la hora de inicio y la hora de finalización. en caso de que una reserva comience a las 08:00 AM hasta las 02:00 PM, ahora sólo está ocupada a las 08:00 AM y no ocupada las próximas horas hasta las 02:00 PM. mi medida ahora es la siguiente (basado en mis nombres originales de tabla / columna):

Ocupado s CALCULATE(COUNT(BaseOrder[SpaceRef]),FILTER(BaseOrder,BaseOrder[StartKey]<-SELECTEDVALUE('DimDate'[Key])
&&BaseOrder[EndKey]>'SELECTEDVALUE('DimDate'[Key])
))

Esto sucede debido a la relación entre la tabla de tiempo y reuniones. Intente colocar la tabla BaseOrder dentro de un ALL() para ignorar esa relación para este cálculo de la siguiente manera:

Ocupado s CALCULATE(COUNT(BaseOrder[SpaceRef]),FILTER(ALL(BaseOrder),BaseOrder[StartKey]<-SELECTEDVALUE('DimDate'[Key])
&&BaseOrder[EndKey]>'SELECTEDVALUE('DimDate'[Key])
))

Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

TomMartens
Super User
Super User

Hola @joep78 ,

¿puede explicar por qué la habitación 1.42 se marcará como reservada a las 3:00 PM, al menos creo que esta es la habitación que es responsable de la marca de reserva a las 15:00:00.

Desde el final habría deducido que esta habitación estará disponible a partir de las 3:00 PM en adelante.

saludos

Tom



Did I answer your question? Mark my post as a solution, this will help others!

Proud to be a Super User!
I accept Kudos 😉
Hamburg, Germany

Hola Tom,

error de datos de la mañana del domingo, 15:00 no debería tener ninguna reserva abierta de hecho. Gracias por el comentario.

AllisonKennedy
Super User
Super User

¿Tiene una tabla de fecha/hora separada? Si no es así, deberá crear uno con cada hora listada para cada día. Si necesita ayuda con esto, responda y puedo proporcionar más detalles. Suponiendo que ya tiene la tabla de fecha y hora:

Utilice la siguiente fórmula para agregar una columna a la tabla de fechas:

Ocupación ?
COUNTROWS (
FILTRO (
Reuniones
Y (
Reuniones[Hora de inicio] <-DimTime[Hora],
Reuniones[Hora de finalización] > DimTime[Tiempo]
)
)
)

¿Este post ha resuelto tu problema? Por favor, márquelo como una solución para que otros puedan encontrarlo rápidamente y para que la comunidad sepa que su problema ha sido resuelto.


Si has encontrado este post útil, por favor, dale a Kudos.

Trabajo como instructor y consultor para Microsoft 365, especializado en Power BI y Power Query.

https://sites.google.com/site/allisonkennedycv


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

¡Gracias, añadiendo el Tiempo a la tabla DimDate y su columna resolvió mi problema! ¡Gracias!

Hola Allison,

Tengo una tabla DimDate pero no [tiempo] dentro. ¿Hay una manera fácil de agregar esto a esta tabla DimDate. Navegador de Internet no fue útil, así que tal vez usted es capaz de ayudarme con esto?

Aquí hay uno para empezar, he añadido Día de la semana, Hora y hora, pero puede agregar / eliminar cualquiera de esas columnas. También puede cambiar las fechas de inicio y finalización. Los he puesto a partir del 1 de enero de 2020 hasta ahora, siendo el ahora dinámico:

Dejar
startDate : #datetime(2020, 1, 01, 00, 00, 00),
endDate - DateTime.LocalNow(),
Fechas: List.DateTimes(startDate, Duration.Days(endDate - startDate)*24, #duration (0,1,0,0)),
"Converted to Table" á Table.FromList(Dates, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
"Columnas renombradas" - Table.RenameColumns("Converted to Table","Column1", "Date Time"-),
"Tipo modificado" ? Table.TransformColumnTypes("Columnas renombradas", "Hora de fecha", tipo datetime, tipo datetime, tipo datetime, tipo datetime,
"Día insertado de la semana" - Tabla.AddColumn('Tipo cambiado',''Tipo de la semana',', cada Date.DayOfWeek([Fecha]), Int64.Type),
"Hora insertada" - Tabla.AddColumn("Día insertado de la semana", "Hora", cada hora([Hora de la fecha]), Int64.Type),
"Hora insertada" - Tabla.AddColumn ("Hora insertada", "Hora", cada DateTime.Time([Hora de la fecha]), hora de tipo)
En
"Tiempo insertado"

Pegue ese código en el Editor avanzado de una nueva consulta en el Editor de Power Query.

A continuación, solo tendrá que combinar la fecha y la hora de inicio en la tabla Reuniones como [Fecha de inicio] y combinar la fecha y hora de finalización en la tabla de reuniones como [Fecha de finalización] (puede hacerlo en el Editor de consultas en la pestaña Agregar columna).

Utilice esta fórmula en DAX como una columna calculada para la tabla Tiempo (igual que la fórmula de mi publicación anterior pero con nombres de columna actualizados):

Ocupación: COUNTROWS(FILTER(Meetings,AND(Meetings[Start Date]<-Time[Date Time],Meetings[End Date]>-Time[Date Time]))

Una vez más, hágamelo saber si necesita aclaraciones sobre cualquiera de los anteriores.

Nota: Esta es una tabla de tabla de tiempo, NO una tabla de fechas. Este vínculo podría ayudar a explicar por qué no es una tabla de fechas. https://docs.microsoft.com/en-us/power-bi/desktop-date-tables


Please @mention me in your reply if you want a response.

Copying DAX from this post? Click here for a hack to quickly replace it with your own table names

Has this post solved your problem? Please Accept as Solution so that others can find it quickly and to let the community know your problem has been solved.
If you found this post helpful, please give Kudos C

I work as a Microsoft trainer and consultant, specialising in Power BI and Power Query.
www.excelwithallison.com

Helpful resources

Announcements
April AMA free

Microsoft Fabric AMA Livestream

Join us Tuesday, April 09, 9:00 – 10:00 AM PST for a live, expert-led Q&A session on all things Microsoft Fabric!

March Fabric Community Update

Fabric Community Update - March 2024

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

Top Solution Authors