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.
Hola a todos
Desde hace un par de días, estoy pensando en calcular el número de horas por empleado desde el pasado hasta hoy.
Tengo una mesa con Employments. En esta tabla tengo una fecha de inicio, una fecha de finalización (también puede estar en blanco) y un EmployeeHID que hace referencia a otra tabla con el FullName del empleado. Para obtener las horas de tostador (basado en el promedio de horas por semana) tengo el siguiente DAX:
Se ve así:
PLease tomar esta información: las tres primeras filas son para el mismo empleado. Ahora quiero obtener esta información en una matriz para que pueda hacer una visión general de las horas de avarage por semana / mes etc. Pero eso se ve así:
Como ven, todavía tengo que hacer una fórmula adicional para el promedio de horas por mes, pero la respuesta más buscada está en mi pregunta: ¿Cómo puedo extender el último valor de los tostadores en períodos de "en blanco". El empleado todavía está empleado, ¿cómo puedo rellenar el último valor en los campos en blanco de los períodos? Y, por supuesto, hay más empleados y me gustaría calcular toda la capacidad en horas para toda la organización.
¿Alguien sabe cómo? ¡Muchas gracias!
Solved! Go to Solution.
Hola Paul,
Thnx otra vez para su respuesta. Me da otra idea sobre el cálculo de los días (u horas etc.) entre la fecha de inicio de un empleo, incluida la fecha de finalización. En mi tabla de dimdate he calculado columna que me da los días laborables por semana (de lunes a viernes:
Primero:
Después de estos dos colums calculados agregué unacolumna calcuada en mi tabla Empleos:
Empleado | StartDate | Enddate | DaysDurationEmpleo |
Annemiek | 25-9-2019 00:00 | 30-9-2019 00:00 | 4 |
Annemiek | 1-10-2019 00:00 | 31-12-2019 00:00 | 66 |
Annemiek | 1-1-2020 00:00 | 98 | |
Anouk | 2-9-2019 00:00 | 185 |
Con la columna [DaysDurationEmployment] puedo calcular cualquier cosa que necesite.
¡Resuelto! 🙂
@AltusTellus
Gracias por la muestra, esto está claro ahora. Pero lamentablemente su solución esperada no se puede alcanzar con su tabla de datos. Porque en la tabla no hay ningún valor registrado para cada empleado en otras fechas de inicio y finalización. Suena un poco confuso, en otra palabra si desea llenar los espacios en blanco, al menos debe tener una fila para grabar esos espacios en blanco bajo las otras fechas, incluso hay 0 o valores en blanco.
Saludos
Paul Zheng
Hola Paul,
Thnx otra vez para su respuesta. Me da otra idea sobre el cálculo de los días (u horas etc.) entre la fecha de inicio de un empleo, incluida la fecha de finalización. En mi tabla de dimdate he calculado columna que me da los días laborables por semana (de lunes a viernes:
Primero:
Después de estos dos colums calculados agregué unacolumna calcuada en mi tabla Empleos:
Empleado | StartDate | Enddate | DaysDurationEmpleo |
Annemiek | 25-9-2019 00:00 | 30-9-2019 00:00 | 4 |
Annemiek | 1-10-2019 00:00 | 31-12-2019 00:00 | 66 |
Annemiek | 1-1-2020 00:00 | 98 | |
Anouk | 2-9-2019 00:00 | 185 |
Con la columna [DaysDurationEmployment] puedo calcular cualquier cosa que necesite.
¡Resuelto! 🙂
@AltusTellus
Lo siento, debido a la política no podemos utilizar el mensaje personal. Puede crear una muestra corta con valor aleatorio en las columnas. Para poder probarlo. Gracias
Paul
Hola
La tabla 'Programaciones' tiene el siguiente aspecto:
PromedioHoras | Identificación de empleo | Enddate | StartDate |
40 | Campo guía | Null | 1-1-2016 00:00 |
36 | Campo guía | Null | 1-1-2019 00:00 |
36 | Campo guía | 31-12-2018 00:00 | 1-7-2018 00:00 |
24 | Campo guía | Null | 1-5-2020 00:00 |
y la otra tabla es 'Empleo' (que utilizo para el [EmployeeFullName]:
EmployeeFullName | Identificación de empleo |
Annemiek | Campo guía |
Anouk | Campo guía |
Antoon | Campo guía |
Carla | Campo guía |
¿Es esto lo que necesitas / te gusta tener que llegar a una solución? Muchos thnx.
@AltusTellus
¿El dax tiene ahora una medida o una columna? Le recomiendo que cree TotalHours con una columna calculada y, a continuación, cree la siguiente columna como resultado para rellenar los espacios en blanco:
Result =
var latestdate = CALCULATE(MAX('Table'[Date]),FILTER('Table','Table'[Totalhours]<>BLANK()&& [Date]<=EARLIER('Table'[Date])))
Return IF([Totalhours]=BLANK(),CALCULATE(MAX([Totalhours]),FILTER('Table',[Date]=latestdate)),'Table'[Totalhours])
Equipo de Apoyo Comunitario Paul Zheng _
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Querido Pablo,
Basado en su entrada (thnx!) Hice la siguiente columna calculada:
Necesita 2 columnas en total, la 1a columna es TotalHours que tiene campos en blanco. Yalo tienes en una medida, pero necesitas cambiarlo a una columna.
La 2a columna es la columna de resultados que desea, la lógica es SI la 1a columna [TotalHours] está en blanco, devuelve las ventas de la última fecha. Debe cambiar el [AverageHours] a [TotalHours] (1a columna tiene espacios en blanco) que ha creado.
Equipo de Apoyo Comunitario Paul Zheng _
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Hola Paul,
Creo que ya casi llegamos, pero no entiendo completamente tu DAX. Información adicional: la tabla 'tb_Schedules' tiene varias columnas como [AverageHours], [EmployeeHID], [StartDate] y [EndDate]. No hay espacios en blanco en las columnas.
En la tabla 'dimdate' (que contiene todos los datos de referencia desde 2013 hasta 2099) el campo [Fecha] está conectado con [StartDate] de la tabla 'tb_Schedules'. En una matriz pongo [Empleado] como filas y [Fecha] como columnas. Con su DAX el resultado es:
Usted ve que este empleado tiene un horario que comenzó el 25 de septiembre de 2019 y tiene un nuevo horario para el 1 de octubre. Después de eso tengo espacios en blanco hasta un nuevo horario para este empleado por el 1 de enero de 2020.
Lo que me gustaría ver (y usar para cálculos adicionales) es que no hay espacios en blanco, sino el último valor de la programación actual hasta la programación secuenciada. Tenga en cuenta que esta captura de pantalla es con los días como columnas, voy a ir a números de semana.
¿Puedes ayudarme más, por favor? ¡Muchas gracias!
Podrías compartir tu muestra si no pudieras obtener mi siguiente explicación. Explico la lógica del dax en dos partes.
1. La situación actual es que ya ha creado la siguiente columna [TotalHours],pero tiene espacios en blanco y desea llenar los espacios en blanco con el último valor no en blanco de la programación actual.
TotalHours =
CALCULATE(SUM(tb_Schedules[AverageHours]);
FILTER(tb_Schedules;
tb_Schedules[StartDate] >= MAX(tb_Schedules[StartDate]) &&
tb_Schedules[EndDate] <= MIN(tb_Schedules[EndDate])))
2. Para llenar el espacio en blanco con el último valor no en blanco, primero encontrará la última fecha de la programación actual que tiene un valor con "VAR lastesdate", luego regrese con un fucntion IF, si [TotalHours] está en blanco devolver el valor de lasted non blank value at then, Si no en blanco simplemente devuelve [TotalHours]. Esta es la columna que debe poner en la matriz:
TotalHours Fill Blanks =
VAR latestdate = CALCULATE(MAX('tb_Schedules'[EndDate]);
FILTER('tb_Schedules';'tb_Schedules'[TotalHours]<>BLANK()&& 'tb_Schedules'[EndDate]<=EARLIER('tb_Schedules'[EndDate])))
Return IF([TotalHours]=BLANK();CALCULATE(MAX([TotalHours]);FILTER('tb_Schedules';[EndDate]=latestdate));[TotalHours])
Equipo de Apoyo Comunitario Paul Zheng _
Si este post ayuda, por favor considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.
Y así es como se ve en una tabla:
Tu explicación es clara, thnx para eso. Por lo tanto, tengo dos columnas extra: [TotalHours] y [TotalHours Fill Blanks]. El resultado es:
¿Es porque hemos olvidado filtrar también en la columna [Empleado]? ¿O algo más?
Si es necesario: la información es confidencial, ¿puedo compartir mi archivo enviándole DM?
Información adicional: esta pestaña con Horarios está conectada a mi tabla de dimdate. Creo que tiene algo que ver con ADDCOLUMNS pero no sé cómo hacerlo.
Necesitarás algo a lo largo de las líneas de Open Tickets. https://community.powerbi.com/t5/Quick-Measures-Gallery/Open-Tickets/m-p/409364#M147
Los datos de muestra como texto serían geniales. Por favor, consulte este post sobre cómo obtener su pregunta respondida rápidamente: https://community.powerbi.com/t5/Community-Blog/How-to-Get-Your-Question-Answered-Quickly/ba-p/38490
Muchas gracias por su respuesta! En el artículo al que hace referencia me falta información adicional sobre las tablas del ejemplo DAX. Desgraciadamente, no lo entiendo.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.
User | Count |
---|---|
2 | |
1 | |
1 | |
1 | |
1 |
User | Count |
---|---|
2 | |
2 | |
2 | |
2 | |
1 |