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
Syndicate_Admin
Administrator
Administrator

medir para buscar valor y agregado al total y depender por fecha para campos sin datos

¡¡Actualizaciones!!

Aquí hay algunos datos de muestra para abordar mejor mi objetivo.

Roster rable

IDENTIFICACIÓNNombre
0123456Juan
0234567María
0345678Greg
0456789Cometa
0567890Pedro

Tabla de horas de trabajo

NombreNúmero de empleadoReloj encendidoReloj apagadoSolo reloj en fechaMin de trabajoHora de trabajo
Greg0567822/11/21 6:00 AM22/11/21 7:00 AM11/22/202160.001.00
Greg0567822/11/21 7:05 AM22/11/21 8:10 AM11/22/202165.001.08
Cometa0678922/11/21 7:30 AM22/11/21 9:11 AM11/22/2021101.001.68
Greg0567822/11/21 8:25 AM22/11/21 14:1011/22/2021345.005.75
María0234522/11/21 8:25 AM22/11/21 10:49 AM11/22/2021144.002.40
Juan0345622/11/21 9:06 AM22/11/21 10:06 AM11/22/202160.001.00
Cometa0678922/11/21 10:08 AM22/11/21 12:45 PM11/22/2021157.002.62
Juan0345622/11/21 10:15 AM22/11/21 12:45 PM11/22/2021150.002.50
María0234522/11/21 11:20 AM22/11/21 17:0211/22/2021342.005.70
Juan0345622/11/21 12:56 PM22/11/21 17:0011/22/2021244.004.07
Cometa0678922/11/21 13:1722/11/21 16:4511/22/2021208.003.47
María0234522/11/21 17:2022/11/21 19:0711/22/2021107.001.78
Juan0345623/11/21 6:15 AM23/11/21 8:00 AM11/23/2021105.001.75
Greg0567823/11/21 7:00 AM23/11/21 11:06 AM11/23/2021246.004.10
María0234523/11/21 7:45 AM23/11/21 10:17 AM11/23/2021152.002.53
Juan0345623/11/21 8:06 AM23/11/21 10:26 AM11/23/2021140.002.33
Juan0345623/11/21 10:55 AM23/11/21 13:5711/23/2021182.003.03
Greg0567823/11/21 14:0623/11/21 15:0611/23/202160.001.00
Juan0345624/11/21 6:00 AM24/11/21 8:11 AM11/24/2021131.002.18
Cometa0678924/11/21 6:06 AM24/11/21 8:06 AM11/24/2021120.002.00
María0234524/11/21 6:10 AM24/11/21 8:06 AM11/24/2021116.001.93
Greg0567824/11/21 6:16 AM24/11/21 8:01 AM11/24/2021105.001.75
Greg0567824/11/21 8:06 AM24/11/21 11:06 AM11/24/2021180.003.00
Cometa0678924/11/21 8:20 AM24/11/21 10:55 AM11/24/2021155.002.58
Juan0345624/11/21 8:25 AM24/11/21 11:06 AM11/24/2021161.002.68
Cometa0678924/11/21 11:00 AM24/11/21 11:55 AM11/24/202155.000.92
Greg0567824/11/21 11:26 AM24/11/21 15:3611/24/2021250.004.17
Cometa0678924/11/21 13:0024/11/21 15:0011/24/2021120.002.00
Juan0345624/11/21 13:2724/11/21 16:1611/24/2021169.002.82
Pedro0789024/11/21 6:54 AM24/11/21 8:32 AM11/24/202198.001.63
Pedro0789024/11/21 9:14 AM24/11/21 11:32 AM11/24/2021138.002.30
Pedro0789024/11/21 13:5424/11/21 17:1211/24/2021198.003.30

Tabla de registro de cambios de mayús

Número de empleadoNombreCambio de turno de horaFecha de cambio de Chift
02345María1011/22/2021
05678Greg911/24/2021

tabla de registros de vacaciones

Número de empleadoNombrehoras libresfecha de vacaciones
06789Cometa811/23/2021
02345María411/23/2021
05678Greg211/23/2021
02345María511/24/2021

Lo que quiero lograr:

filtro de fecha: pasados __3__ Días

22-nov23-Nov24-NovTotal
Número de empleadoReloj en horaHora de DisponibilidadReloj en horaHora de DisponibilidadReloj en horaHora de DisponibilidadReloj en horaHora de Disponibilidad
023459.88102.5341.93314.3517
034567.5787.1287.68822.3724
056787.8385.1068.92921.8523
067897.7780.0007.50815.2716
078900.0080.0087.2387.2324
Total33.0542.0014.7526.0033.2736.0081.07104.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:

jessi82315_1-1637789880569.png

Tabla de trabajo:

jessi82315_2-1637789897376.png

Cambio de horario de turnos:

jessi82315_3-1637789949957.png

Tiempo libre :

jessi82315_4-1637789990249.png

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.

jessi82315_6-1637790975662.png

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

2 ACCEPTED SOLUTIONS

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.

vangzhengmsft_0-1638410466697.png

Resultado:

vangzhengmsft_0-1638410774641.png

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.

View solution in original post

Syndicate_Admin
Administrator
Administrator

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.

View solution in original post

13 REPLIES 13
Syndicate_Admin
Administrator
Administrator

Hi @v-angzheng-msft

¡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

Syndicate_Admin
Administrator
Administrator

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

Syndicate_Admin
Administrator
Administrator

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]))&&not(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]))&&not(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]))&&not(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:

vangzhengmsft_0-1638267324819.png

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.

@v-angzheng-msft

¡¡¡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é?

jessi82315_0-1638369269403.png

jessi82315_1-1638369282966.png

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.

vangzhengmsft_0-1638410466697.png

Resultado:

vangzhengmsft_0-1638410774641.png

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.

@v-angzheng-msft

¿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

@v-angzheng-msft

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

@v-angzheng-msft

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

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