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

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

Informe de turnos durante las 24 horas del reloj por hora y día

Buenos días

Estoy tratando de crear un informe de algunos datos de turnos. Por ejemplo, una persona comienza allí Turno a las 08:00 de la mañana y termina a las 17:00. Quiero informar sobre el número de personas que están trabajando durante cualquier período de 15 minutos, dado que los empleados comenzarán y terminarán en diferentes momentos.

He podido escribir algún código DAX que asignará el patrón de desplazamiento a través de los diferentes períodos de 15 miunte. Sin embargo, me encuentro con problemas al intentar agregar los resultados.

El digram belwo muestra las 3 filas de datos (3 turnos) y los resultados. que muestra, por ejemplo, que se está agregando a 3 para 9,45 en lugar de 1

RodneyArbon_0-1604054461163.png

El código Dax para la fórmula es:

Cálculo de paso a paso V3 ?
VAR MaxTime á MAXX(TimeTable,[Time]) -- 23:59:59
VAR MinTime á MINX(TimeTable,[Time]) -- 00:00:00
VAR ShiftStartTime á MINX(shifts,[SharedstartTime])
VAR ShiftEndTime á MAXX(Shifts,[SharedEndTime])
VAR ShiftTime - ShiftEndTime - ShiftStartTime -- 07:15:00
VAR TimeFromStartDate á MAXX(Shifts,[SharedStartTime]) - MinTime-- 08:00:00
VAR TimeFromEndate á MAXX(Shifts,[SharedEndTime]) - MaxTime -- + ShiftTime -- 15:15:00
VAR MaxDate á MAXX('Calendario',[Fecha])
Var InShift á IF(AND(MaxTime>-ShiftStartTime, MinTime <- ShiftEndTime),[Shiftcount],0)
devolución
if(HASONEVALUE('Shifts'[Date]),Inshift,sumx(VALUES('Shifts'[Date]),[Shiftcount]) )

cualquier ayuda sobre cómo resolver estaría agradecido

1 ACCEPTED SOLUTION
mahoneypat
Employee
Employee

Así es como abordaría esto en un objeto visual de matriz.

1. Haga una tabla de tiempos desconectada en el editor de consultas con el valor de list.Times(#time(0,0,0),96,#duration(0,0,15,0)), conviértalo en tabla, cámbiele el nombre y cárguelo.

2. Haga una matriz visual con esta nueva columna como las columnas

3. Utilice una medida como esta para contar el número de personas que trabajan durante ese intervalo de tiempo. TimeSlot es la tabla con los incrementos de 15 minutos del paso 1)

Num de empleados ?
Var mintime ?
MIN ( Timeslots[TimeSlot] )
Tiempo máximo de VAR ?
MAX ( Timeslots[Timeslot] )
devolución
CALCULAR (
DISTINCTCOUNT ( Tabla[EmployeeID] ),
Tabla[StartTime] <-maxtime,
Tabla[StopTime] > ? mintime
)

Debería poder usar la columna Fecha en filas de la matriz.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


View solution in original post

3 REPLIES 3
mahoneypat
Employee
Employee

Así es como abordaría esto en un objeto visual de matriz.

1. Haga una tabla de tiempos desconectada en el editor de consultas con el valor de list.Times(#time(0,0,0),96,#duration(0,0,15,0)), conviértalo en tabla, cámbiele el nombre y cárguelo.

2. Haga una matriz visual con esta nueva columna como las columnas

3. Utilice una medida como esta para contar el número de personas que trabajan durante ese intervalo de tiempo. TimeSlot es la tabla con los incrementos de 15 minutos del paso 1)

Num de empleados ?
Var mintime ?
MIN ( Timeslots[TimeSlot] )
Tiempo máximo de VAR ?
MAX ( Timeslots[Timeslot] )
devolución
CALCULAR (
DISTINCTCOUNT ( Tabla[EmployeeID] ),
Tabla[StartTime] <-maxtime,
Tabla[StopTime] > ? mintime
)

Debería poder usar la columna Fecha en filas de la matriz.

saludos

palmadita





Did I answer your question? Mark my post as a solution! Kudos are also appreciated!

To learn more about Power BI, follow me on Twitter or subscribe on YouTube.


@mahoneypa HoosierBI on YouTube


Anonymous
Not applicable

Gracias Eso es genial. Creo que pensé más en esta solución.

Cualquier idea de cómo hacer que esto funcione cuando la hora de inicio es en un día, pero la hora de finalización es en el día siguiente.

por ejemplo > StartDate y Time 30/10/2020 22:00 > EndDate and Time 31/10/2020 05:00

esto se neded para las personas que trabajan de noche

gracias 🙂

Anonymous
Not applicable

El código de la tabla de tiempo es así:

TimeTable (TimeTable)
VAR HourTable - SELECTCOLUMNS(GENERATESERIES(0, 23), "Hour", [Value])
VAR MinuteTable - SELECTCOLUMNS(GENERATESERIES(0, 59), "Minute", [Value])
VAR SecondsTable - SELECTCOLUMNS(GENERATESERIES(0, 59), "Second", [Value])
devolución
ADDCOLUMNS(
CROSSJOIN(HourTable, MinuteTable,SecondsTable),"Time", TIME([Hour], [Minute], [Second]),
"Time15", If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("00:15:00"),TIMEVALUE("00:15:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("00:30:00"),TIMEVALUE("00:30:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("00:45:00"),TIMEVALUE("00:45:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("01:00:00"),TIMEVALUE("01:00:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("01:15:00"),TIMEVALUE("01:15:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("01:30:00"),TIMEVALUE("01:30:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("01:45:00"),TIMEVALUE("01:45:00"),
If(TIME([Hour], [Minute], [Second])<-TIMEVALUE("02:00:00"),TIMEVALUE("02:00:00"),
y modelo de datos..

Capture.PNG

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

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