Earn the coveted Fabric Analytics Engineer certification. 100% off your exam for a limited time only!
¡¡Actualizaciones!!
Aquí hay algunos datos de muestra para abordar mejor mi objetivo.
Roster rable
IDENTIFICACIÓN | Nombre |
0123456 | Juan |
0234567 | María |
0345678 | Greg |
0456789 | Cometa |
0567890 | Pedro |
Tabla de horas de trabajo
Nombre | Número de empleado | Reloj encendido | Reloj apagado | Solo reloj en fecha | Min de trabajo | Hora de trabajo |
Greg | 05678 | 22/11/21 6:00 AM | 22/11/21 7:00 AM | 11/22/2021 | 60.00 | 1.00 |
Greg | 05678 | 22/11/21 7:05 AM | 22/11/21 8:10 AM | 11/22/2021 | 65.00 | 1.08 |
Cometa | 06789 | 22/11/21 7:30 AM | 22/11/21 9:11 AM | 11/22/2021 | 101.00 | 1.68 |
Greg | 05678 | 22/11/21 8:25 AM | 22/11/21 14:10 | 11/22/2021 | 345.00 | 5.75 |
María | 02345 | 22/11/21 8:25 AM | 22/11/21 10:49 AM | 11/22/2021 | 144.00 | 2.40 |
Juan | 03456 | 22/11/21 9:06 AM | 22/11/21 10:06 AM | 11/22/2021 | 60.00 | 1.00 |
Cometa | 06789 | 22/11/21 10:08 AM | 22/11/21 12:45 PM | 11/22/2021 | 157.00 | 2.62 |
Juan | 03456 | 22/11/21 10:15 AM | 22/11/21 12:45 PM | 11/22/2021 | 150.00 | 2.50 |
María | 02345 | 22/11/21 11:20 AM | 22/11/21 17:02 | 11/22/2021 | 342.00 | 5.70 |
Juan | 03456 | 22/11/21 12:56 PM | 22/11/21 17:00 | 11/22/2021 | 244.00 | 4.07 |
Cometa | 06789 | 22/11/21 13:17 | 22/11/21 16:45 | 11/22/2021 | 208.00 | 3.47 |
María | 02345 | 22/11/21 17:20 | 22/11/21 19:07 | 11/22/2021 | 107.00 | 1.78 |
Juan | 03456 | 23/11/21 6:15 AM | 23/11/21 8:00 AM | 11/23/2021 | 105.00 | 1.75 |
Greg | 05678 | 23/11/21 7:00 AM | 23/11/21 11:06 AM | 11/23/2021 | 246.00 | 4.10 |
María | 02345 | 23/11/21 7:45 AM | 23/11/21 10:17 AM | 11/23/2021 | 152.00 | 2.53 |
Juan | 03456 | 23/11/21 8:06 AM | 23/11/21 10:26 AM | 11/23/2021 | 140.00 | 2.33 |
Juan | 03456 | 23/11/21 10:55 AM | 23/11/21 13:57 | 11/23/2021 | 182.00 | 3.03 |
Greg | 05678 | 23/11/21 14:06 | 23/11/21 15:06 | 11/23/2021 | 60.00 | 1.00 |
Juan | 03456 | 24/11/21 6:00 AM | 24/11/21 8:11 AM | 11/24/2021 | 131.00 | 2.18 |
Cometa | 06789 | 24/11/21 6:06 AM | 24/11/21 8:06 AM | 11/24/2021 | 120.00 | 2.00 |
María | 02345 | 24/11/21 6:10 AM | 24/11/21 8:06 AM | 11/24/2021 | 116.00 | 1.93 |
Greg | 05678 | 24/11/21 6:16 AM | 24/11/21 8:01 AM | 11/24/2021 | 105.00 | 1.75 |
Greg | 05678 | 24/11/21 8:06 AM | 24/11/21 11:06 AM | 11/24/2021 | 180.00 | 3.00 |
Cometa | 06789 | 24/11/21 8:20 AM | 24/11/21 10:55 AM | 11/24/2021 | 155.00 | 2.58 |
Juan | 03456 | 24/11/21 8:25 AM | 24/11/21 11:06 AM | 11/24/2021 | 161.00 | 2.68 |
Cometa | 06789 | 24/11/21 11:00 AM | 24/11/21 11:55 AM | 11/24/2021 | 55.00 | 0.92 |
Greg | 05678 | 24/11/21 11:26 AM | 24/11/21 15:36 | 11/24/2021 | 250.00 | 4.17 |
Cometa | 06789 | 24/11/21 13:00 | 24/11/21 15:00 | 11/24/2021 | 120.00 | 2.00 |
Juan | 03456 | 24/11/21 13:27 | 24/11/21 16:16 | 11/24/2021 | 169.00 | 2.82 |
Pedro | 07890 | 24/11/21 6:54 AM | 24/11/21 8:32 AM | 11/24/2021 | 98.00 | 1.63 |
Pedro | 07890 | 24/11/21 9:14 AM | 24/11/21 11:32 AM | 11/24/2021 | 138.00 | 2.30 |
Pedro | 07890 | 24/11/21 13:54 | 24/11/21 17:12 | 11/24/2021 | 198.00 | 3.30 |
Tabla de registro de cambios de mayús
Número de empleado | Nombre | Cambio de turno de hora | Fecha de cambio de Chift |
02345 | María | 10 | 11/22/2021 |
05678 | Greg | 9 | 11/24/2021 |
tabla de registros de vacaciones
Número de empleado | Nombre | horas libres | fecha de vacaciones |
06789 | Cometa | 8 | 11/23/2021 |
02345 | María | 4 | 11/23/2021 |
05678 | Greg | 2 | 11/23/2021 |
02345 | María | 5 | 11/24/2021 |
Lo que quiero lograr:
filtro de fecha: pasados __3__ Días
22-nov | 23-Nov | 24-Nov | Total | |||||
Número de empleado | Reloj en hora | Hora de Disponibilidad | Reloj en hora | Hora de Disponibilidad | Reloj en hora | Hora de Disponibilidad | Reloj en hora | Hora de Disponibilidad |
02345 | 9.88 | 10 | 2.53 | 4 | 1.93 | 3 | 14.35 | 17 |
03456 | 7.57 | 8 | 7.12 | 8 | 7.68 | 8 | 22.37 | 24 |
05678 | 7.83 | 8 | 5.10 | 6 | 8.92 | 9 | 21.85 | 23 |
06789 | 7.77 | 8 | 0.00 | 0 | 7.50 | 8 | 15.27 | 16 |
07890 | 0.00 | 8 | 0.00 | 8 | 7.23 | 8 | 7.23 | 24 |
Total | 33.05 | 42.00 | 14.75 | 26.00 | 33.27 | 36.00 | 81.07 | 104.00 |
Quiero que el informe pueda capturar dinámicamente el reloj real en hora frente a las horas disponibles y poder mostrar el total tanto para la fila como para la columna.
Espero que esto lo haga más claro de entender!!!
¡Gracias!
Post original**********************
Hola a todos,
Estoy trabajando en un informe de horas de trabajo.
Hay 4 mesas.
Columna con cruz roja es la clave principal.
Lista:
Tabla de trabajo:
Cambio de horario de turnos:
Tiempo libre :
Estoy tratando de construir un talbe donde pueda:
1. filtrar por fecha para ver la tasa de utilización de mano de obra a lo largo de la semana / mes / año ... etc.
2. mostrar la hora de entrada frente a las horas disponibles para cada empleado.
3. total para el día del reloj en hora y hora disponible.
Factores:
1. El horario de turno no siempre es de 8 horas.
así que creo una tabla para enviar el registro de cambio de turno.
2. necesidad de considerar el tiempo libre.
también hay una tabla para los registros de tiempo libre.
Problema:
1. Agregué una columna en la tabla de horas de trabajo para calcular las horas disponibles. Así que cada reloj en los registros tiene una hora disponible. Pero si el empleado por alguna razón no registró el día que está disponible, ya que no hay reloj en los registros. La persona no tiene una hora disponible calculada, por lo que se muestra en blanco para "hora de reloj" y "horas disponibles". (ver más abajo) Esto hace que el total de horas disponibles esté sesgado, desde la imagen de abajo, si las 2 personas no están apagadas, las horas disponibles deben ser 616 no 600.
Pude hacer una medida para mostrar 0 para "hora de reloj", pero para "horas disponibles" se vuelve complicado.
Si hago otra medida para comprobar 1. si esa persona está apagada y 2. si su turno cambiara, En primer lugar, ni siquiera sé si podría hacer que esta medida funcionara. En segundo lugar, el problema será: incluso si hago que esto funcione, los números no se agregarán al total.
Ahora estoy totalmente perdido... tal vez es incorrecto agregar las horas disponibles al reloj en la tabla?
Estaba tratando de evitar hacer una mesa grande para almacenar las horas disponibles de todos los empleados para todos los días en un año ...
Cualquier sugerencia sería muy apreciada... !!!
¡¡¡Gracias!!!
Solved! Go to Solution.
En ella, @jessi82315
Lo sé. Porque no consideré el filtro al calcular el total.
Intente agregar filtros como los siguientes, puede obtener el resultado correcto.
Resultado:
De hecho, son cerca de tres horas, pero esto no estará más allá de su conocimiento. Debe haber una manera más fácil, pero en ese momento esta solución fue la única en la que pensé.
He aprendido mucho sobre este caso, gracias por mencionarlo. 😉
Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hola, @jessi82315
Esta lógica parece ser correcta. Si no reacciona,compruebe si se ha añadido filtro a todos los VAR (necesarios para el cálculo) y compruebe si existe una relación de filtrado entre la segmentación de datos y otros campos
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
¡Espero que lo estés haciendo bien! Acabo de encontrar otra pregunta que nunca la aclaré. (y puede ser una pregunta tonta ... Por favor, tengan paciencia conmigo )
Múltiples variables en la medida como esta a continuación: el filtro para la fecha
var _sum=CALCULATE(SUM('tabla de registro de vacaciones'[horas libres]),FILTER(ALL('tabla de registro de vacaciones'),'tabla de registro de vacaciones'[Número de empleados]=MAX('Tabla de horas de trabajo'[Número de empleados])&&'tabla de registros de vacaciones'[fecha de vacaciones]=MAX('ColumnOfMatrix'[Clock on Date only]))))
Al filtrar los datos, ¿cómo es que usar MAX puede obtener el resultado correcto?
Entiendo que la medida es una función agregada basada y no se puede realizar sin usar estos MAX, SUM ... etc. funciona, pero ¿no siempre está mirando la fecha máxima para coincidir????
Gracias
Jessie
Hola, @jessi82315
Esta definitivamente no es una pregunta tonta , por el contrario, es buena y mucha gente está luchando aquí.
Hice una explicación en un hilo anterior, puedes leerla para ayudar a entender.
Pregunta sobre la suma acumulativa de transición sintác/contexto
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
Hi @v-angzheng-msft ,
perdón por la respuesta tardía! Había estado leyendo tu post y aprendiendo todas estas cosas. probablemente se emocionó demasiado y se olvidó de responder 🤣 ¡Pero sí! ! eso es muy útil!!! Realmente apreciamos su GRAN AYUDA 💪
¡Gracias!
Jessie
Hola, @jessi82315
Esta lógica parece ser correcta. Si no reacciona,compruebe si se ha añadido filtro a todos los VAR (necesarios para el cálculo) y compruebe si existe una relación de filtrado entre la segmentación de datos y otros campos
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
@v-angzheng-msft ¡¡Gracias!! Agregué alguna relación entre las tablas y ahora funciona.
Gracias de nuevo!!!! 😀
En ella, @jessi82315
¿Podría compartir un archivo de muestra simple sin ninguna información confidencial y publicar el resultado esperado para que quede claro lo que debe implementarse? Hace que sea más fácil darle una solución.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
hmmm ahora ni siquiera puedo ver ninguna respuesta ...
¡Espero que puedas ver mi respuesta! @v-angzheng-msft !!
En ella, @jessi82315
No te preocupes, ya he solicitado eliminar la publicación del spam.
Bien, he visto tu respuesta. Tenga en cuenta: Si la respuesta se edita demasiadas veces, la publicación se marcará como spam.
Me tomó cerca de tres horas procesar su caso, y finalmente obtuve la solución.
Aquí está la solución:
Primero cree tres tablas auxiliares:
ColumnOfMatrix = VALUES('Labor hour table'[Clock on Date only])
Shift All =
var _t1=SUMMARIZE('Labor hour table',[Employee Num],[Name])
var _t2=VALUES('Labor hour table'[Clock on Date only])
var _t=GENERATE(_t1,_t2)
var _except=EXCEPT(_t,SUMMARIZE('Shift change record table',[Employee Num],[Name],[Chift change date]))
var _add=ADDCOLUMNS(_except,"Shift Change hour",8)
var _name=SELECTCOLUMNS(_add,"Empoyee Num",[Employee Num],"Name",[Name],"Shift Change hour",[Shift Change hour],"Chift change date",[Clock on Date only])
var _union=UNION('Shift change record table',_name)
return _union
Vacation All =
var _t1=SUMMARIZE('Labor hour table',[Employee Num],[Name])
var _t2=VALUES('Labor hour table'[Clock on Date only])
var _t=GENERATE(_t1,_t2)
var _except=EXCEPT(_t,SUMMARIZE('vacation record table',[Employee Num],[Name],[vacation date]))
var _add=ADDCOLUMNS(_except,"time off hours",0)
var _name=SELECTCOLUMNS(_add,"Empoyee Num",[Employee Num],"Name",[Name],"time off hours",[time off hours],"vacation dadte",[Clock on Date only])
var _union=UNION('vacation record table',_name)
return _union
Para crear cuatro medidas:
_Clock in hour =
var _clock=CALCULATE(SUM('Labor hour table'[Labor Hour]),FILTER(ALL('Labor hour table'),'Labor hour table'[Clock on Date only]=MAX('ColumnOfMatrix'[Clock on Date only])&&'Labor hour table'[Employee Num]=MAX('Labor hour table'[Employee Num])))
var _if=IF(_clock=BLANK(),0,_clock)
var _column=CALCULATE(SUM('Labor hour table'[Labor Hour]),FILTER(ALL('Labor hour table'),'Labor hour table'[Employee Num]=MAX('Labor hour table'[Employee Num])))
var _row= CALCULATE(SUM('Labor hour table'[Labor Hour]),FILTER(ALL('Labor hour table'),'Labor hour table'[Clock on Date only]=MAX('ColumnOfMatrix'[Clock on Date only])))
var _total=CALCULATE(SUM('Labor hour table'[Labor Hour]))
var _switch=
SWITCH(
TRUE(),
not(HASONEVALUE('Labor hour table'[Employee Num]))&¬(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 4,
_total,
not(HASONEVALUE('Labor hour table'[Employee Num])),
// 3,
_row,
not(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 2,
_column,
// 1
_if
)
return _switch
_ShiftChange =
var _shiftChange=
CALCULATE(MAX('Shift change record table'[Shift Change hour]),
FILTER(ALL('Shift change record table'),'Shift change record table'[Employee Num]=MAX('Labor hour table'[Employee Num])&&'Shift change record table'[Chift change date]=MAX('ColumnOfMatrix'[Clock on Date only])))
var _if=COALESCE(_shiftChange,8)
var _column=CALCULATE(SUM('Shift All'[Shift Change hour]),FILTER(ALL('Shift All'),'Shift All'[Employee Num]=MAX('Labor hour table'[Employee Num])))
var _row= CALCULATE(SUM('Shift All'[Shift Change hour]),FILTER(ALL('Shift All'),'Shift All'[Chift change date]=MAX('ColumnOfMatrix'[Clock on Date only])))
var _total=CALCULATE(SUM('Shift All'[Shift Change hour]))
var _switch=
SWITCH(
TRUE(),
not(HASONEVALUE('Labor hour table'[Employee Num]))&¬(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 4,
_total,
not(HASONEVALUE('Labor hour table'[Employee Num])),
// 3,
_row,
not(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 2,
_column,
// 1
_if
)
return _switch
_timeOff =
var _sum=CALCULATE(SUM('vacation record table'[time off hours]),FILTER(ALL('vacation record table'),'vacation record table'[Employee Num]=MAX('Labor hour table'[Employee Num])&&'vacation record table'[vacation date]=MAX('ColumnOfMatrix'[Clock on Date only])))
var _if=COALESCE(_sum,0)
var _column=CALCULATE(SUM('Vacation All'[time off hours]),FILTER(ALL('Vacation All'),'Vacation All'[Employee Num]=MAX('Labor hour table'[Employee Num])))
var _row= CALCULATE(SUM('Vacation All'[time off hours]),FILTER(ALL('Vacation All'),'Vacation All'[vacation date]=MAX('ColumnOfMatrix'[Clock on Date only])))
var _total=CALCULATE(SUM('Vacation All'[time off hours]))
var _switch=
SWITCH(
TRUE(),
not(HASONEVALUE('Labor hour table'[Employee Num]))&¬(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 4,
_total,
not(HASONEVALUE('Labor hour table'[Employee Num])),
// 3,
_row,
not(HASONEVALUE('ColumnOfMatrix'[Clock on Date only])),
// 2,
_column,
// 1
_if
)
return _switch
_Available = [_ShiftChange]-[_timeOff]
Resultado:
Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
¡¡¡Eres increíble....!!! 😲 Quiero decir que 3 horas para una solución como esta está más allá de mi conocimiento!!! (todavía tengo mucho que aprender...)
¡Estaba estudiando tu solución y recibí una pregunta!
¿Qué campo de fecha será el adecuado para filtrar estos números?
Probé el "Clock on Date only" en la tabla "ColumnOfMatrix", funcionaba bien, pero el Total es el mismo para filtrar durante 2 días y 3 días. Vea a continuación:
Parece que Total durante 2 días no se está sumando correctamente. ¿Sabes por qué?
Muchas gracias
Jessie
En ella, @jessi82315
Lo sé. Porque no consideré el filtro al calcular el total.
Intente agregar filtros como los siguientes, puede obtener el resultado correcto.
Resultado:
De hecho, son cerca de tres horas, pero esto no estará más allá de su conocimiento. Debe haber una manera más fácil, pero en ese momento esta solución fue la única en la que pensé.
He aprendido mucho sobre este caso, gracias por mencionarlo. 😉
Consulte el archivo adjunto a continuación para obtener más detalles. Espero que esto ayude.
Saludos
Equipo de apoyo a la comunidad _ Zeon Zheng
Si esta publicación ayuda,entonces considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla más rápidamente.
¿Podría hacer 1 pregunta más?
Tengo otras columnas en la tabla "Hora de trabajo" como "Número de trabajo".
Estaba tratando de agregar un filtro a las medidas para que respondiera cuando tengo un filtro de "Número de trabajo" activo pero no parece reaccionar. Lo hice de la misma manera que la forma en que agrega el filtro para la fecha: var _row = CALCULATE(SUM('Labor hour table'[Labor Hour table]),FILTER(ALL('Labor hour table'),'Labor hour table'[Clock on Date only]=MAX('ColumnOfMatrix'[Clock on Date only]&&'Labor hour table'[Clock on Date only] in ALLSELECTED(ColumnOfMatrix[Clock on Date only]&&'Labor hour table'[Job Number] in ALLSELECTED('Labor hour table'[Job Number])))
Todavía estoy aprendiendo todos los funcitones dax que usaste en la solución y me pregunto si tal vez hay algo que me estoy perdiendo.
Cualquier ayuda es apreciada!!!
Gracias
Jessie
Eres INCREÍBLE!!!!! ¡Estoy aprendiendo mucho de ti también!
Todavía hay mucho sobre Power BI que no he aprendido y la forma en que lo hace definitivamente trae una nueva perspectiva para resolver problemas.
Gracias de nuevo por su ayuda!!
¡Muy apreciado!
Gracias
Jessie
¡¡Hola!! Lo siento, no estoy seguro de por qué, pero cuando presioné enviar después de editar la publicación y marcó su respuesta como spam ... !!!
¡No lo hice a propósito y tampoco sé cómo deshacerlo...! 😂
si lo desea, por favor, mire mi publicación actualizada nuevamente! ! cualquier ayuda es muy apreciada!!
lo siento de nuevo por eliminar accidentalmente su respuesta ...!
¡¡¡gracias!!!