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
hemalpatel
Frequent Visitor

Horas de trabajo acumuladas frente a objetivos diarios en todas las fechas

Hola

Estoy luchando para obtener los totales correctos para un informe de registro de tiempo / seguimiento. Además, las primeras disculpas por el post masivo - Sólo quería incluir tanta información como sea posible.

Bien, tengo una tabla de dimensiones de fecha y una tabla de hechos con el número de horas trabajadas a continuación:

pbiforum01.PNG

Cada empleado tiene un objetivo diario de 7 horas. Por lo tanto, aunque esto podría ser innecesario, he incluido una columna de ExpectedHours en la tabla DateDimension.

Necesito ser capaz de mostrar cuánto tiempo falta por día, por empleado y ser capaz de roll que para la semana / mes / año, etc. He creado una medida para sumar las horas, pero el problema que estoy recibiendo es cuando un empleado no ha registrado ningún momento en absoluto para el día.

En parte obtuve este trabajo con IF(ISNULL para agregar un 0 a la suma HoursRecorded y un 7 a la suma ExpectedHours para donde los registros no existen. Ejemplo a continuación (la línea roja es donde faltaban los datos / resaltado verde es donde se corrigen):

pbiforum02.PNG

Sin embargo, estoy recibiendo un problema con los totales para todas las sumas que tienen la verificación ISNULL. Parece que, mientras que los valores nulos se llenan con el relavent 0' y 7, estos no se incluyen en los cálculos totales. Ejemplo para un empleado a continuación:

pbiforum03.PNG

En el ejemplo anterior (tabla izquierda), puede ver que los totales de ExpectedHours y HoursMissing (la suma de ExpectedHours menos la suma de HoursRecorded) no incluyen los números donde se registra 0 tiempo. Me gustaría obtener los resultados en la tabla (arriba a la derecha) y filtrar los fines de semana, etc. yo mismo.

He visto problemas similares con los totales que no se suman, pero ninguno que tenga los números necesarios para ser forzado donde existen valores NULL.

¡La ayuda será muy apreciada!

1 ACCEPTED SOLUTION
hemalpatel
Frequent Visitor

¡Creo que lo tengo! Me quedé hasta las 3 de la mañana para averiguar esto y, para mi verguenza, parece que no debería haber tardado tanto en averiguar.

Por lo tanto, mantuve con una columna [ExpectedHours] en la tabla de fechas, ya que este número es un requisito diario. La fórmula es:

DailyExpectedHours = SUM(DimDate_Event[ExpectedHours])+IF(ISBLANK(SUM(DimDate_Event[Date])),7.0,0)

El IF(ISBLANK... ordenado las 7 horas adicionales por día en mi post anterior.

El bit que realmente funcionó - Utilicé SUMX, SUMMARIZE, CALCULATE para resumir las horas por día, por usuario para las entradas de tiempo que se han enviado (publicado) así:

HoursPosted = 
SUMX(
    SUMMARIZE(FctTimeEntry, FctTimeEntry[TimekeeperUserID], DimDate_Event[Date]),
    CALCULATE(IF(SUM(FctTimeEntry[Hours])>[DailyExpectedHours],[DailyExpectedHours], SUM(FctTimeEntry[Hours])), FctTimeEntry[Status] = "Posted")+0
)

Luego, finalmente, la resta y IF() para evitar números negativos:

HoursMissing_Posted = 
VAR _MissingHoursTotal = [DailyExpectedHours]-[HoursPosted]
return IF(_MissingHoursTotal < 0, 0, _MissingHoursTotal)

Esto parece estar funcionando en este momento, aunque los comentarios sobre lo que he hecho serían muy apreciados, ya que todavía estoy aprendiendo Power BI.

Gracias a @amitchandak por el consejo "+0" - no creo que podría haber resuelto esto sin eso.

View solution in original post

4 REPLIES 4
hemalpatel
Frequent Visitor

¡Creo que lo tengo! Me quedé hasta las 3 de la mañana para averiguar esto y, para mi verguenza, parece que no debería haber tardado tanto en averiguar.

Por lo tanto, mantuve con una columna [ExpectedHours] en la tabla de fechas, ya que este número es un requisito diario. La fórmula es:

DailyExpectedHours = SUM(DimDate_Event[ExpectedHours])+IF(ISBLANK(SUM(DimDate_Event[Date])),7.0,0)

El IF(ISBLANK... ordenado las 7 horas adicionales por día en mi post anterior.

El bit que realmente funcionó - Utilicé SUMX, SUMMARIZE, CALCULATE para resumir las horas por día, por usuario para las entradas de tiempo que se han enviado (publicado) así:

HoursPosted = 
SUMX(
    SUMMARIZE(FctTimeEntry, FctTimeEntry[TimekeeperUserID], DimDate_Event[Date]),
    CALCULATE(IF(SUM(FctTimeEntry[Hours])>[DailyExpectedHours],[DailyExpectedHours], SUM(FctTimeEntry[Hours])), FctTimeEntry[Status] = "Posted")+0
)

Luego, finalmente, la resta y IF() para evitar números negativos:

HoursMissing_Posted = 
VAR _MissingHoursTotal = [DailyExpectedHours]-[HoursPosted]
return IF(_MissingHoursTotal < 0, 0, _MissingHoursTotal)

Esto parece estar funcionando en este momento, aunque los comentarios sobre lo que he hecho serían muy apreciados, ya que todavía estoy aprendiendo Power BI.

Gracias a @amitchandak por el consejo "+0" - no creo que podría haber resuelto esto sin eso.

Hola @hemalpatel ,

Me alegra oír eso. Por favor, acepte su respuesta como solución. Su contribución es muy apreciada.

Saludos

Icey

amitchandak
Super User
Super User

@hemalpatel ,¿Puede compartir datos de ejemplo y salida de ejemplo en formato de tabla? O una muestra de pbix después de eliminar datos confidenciales.

Esto parece correcto. Necesidad de comprobar con los datos

siguientes medidas debería funcionar

exp - sum(Table[ExpectedHours])+0

rec -Sum(Table[Hoursrecorded])+0

faltas [exp]-[rec]

Gracias, @amitchandak . Acabo de probar su sugerencia - a continuación están los resultados:

pbiforum04.PNG

Los registros individuales de ExpectedHours ahora tienen 14 en las fechas en las que se registró la hora (aunque esto debería seguir siendo 7). Además, parece que los totales están sumando 7 horas para cada día en el que existen grabaciones de tiempo, es decir, 7* 4 x 35.

Soy nuevo en la publicación en este foro y no pude ver dónde adjuntar un .csv. A continuación se muestran algunos datos tabulares para las dos tablas que utilizo. Solo he puesto en aproximadamente dos/tres semanas de datos (para dos cronometradores) ya que es suficiente para incluir días completos de 7 horas, días parciales y días de cero horas.

[TimeEntry]

TimekeeperIDEventDateHoras
74118/10/2020 00:000.5
74119/10/2020 00:000.2
74119/10/2020 00:000.4
74119/10/2020 00:000.8
74119/10/2020 00:001.9
74119/10/2020 00:009.2
36720/10/2020 00:000.2
36720/10/2020 00:000.7
36720/10/2020 00:000.8
36720/10/2020 00:001
36720/10/2020 00:001.3
36720/10/2020 00:001.5
36720/10/2020 00:002
74120/10/2020 00:001.9
74120/10/2020 00:009.6
36721/10/2020 00:000.3
36721/10/2020 00:000.4
36721/10/2020 00:001.3
36721/10/2020 00:001.5
36721/10/2020 00:002
74121/10/2020 00:000.6
74121/10/2020 00:008.4
36722/10/2020 00:000.2
36722/10/2020 00:000.4
36722/10/2020 00:000.5
36722/10/2020 00:001.5
36722/10/2020 00:004.6
74122/10/2020 00:000.5
74122/10/2020 00:002.8
36723/10/2020 00:000.3
36723/10/2020 00:000.8
36723/10/2020 00:000.9
36723/10/2020 00:002
74123/10/2020 00:001.4
36726/10/2020 00:000.3
36726/10/2020 00:000.8
36726/10/2020 00:000.9
74126/10/2020 00:004.9
36727/10/2020 00:000.2
36727/10/2020 00:000.3
36727/10/2020 00:000.6
36727/10/2020 00:000.7
36727/10/2020 00:001.6
74127/10/2020 00:004.9
36728/10/2020 00:000.4
36728/10/2020 00:000.5
74128/10/2020 00:008.3
36729/10/2020 00:000.8
36729/10/2020 00:001.4
74129/10/2020 00:007.8
36730/10/2020 00:000.2
36730/10/2020 00:000.4
74130/10/2020 00:003.7
36702/11/2020 00:000.3
36702/11/2020 00:000.4
36702/11/2020 00:000.7
36703/11/2020 00:000.3
36703/11/2020 00:000.4
36703/11/2020 00:001.2
36705/11/2020 00:000.3
36705/11/2020 00:000.4
36705/11/2020 00:001.7
36706/11/2020 00:000.2
36706/11/2020 00:000.3
36706/11/2020 00:000.5
36706/11/2020 00:000.7
36706/11/2020 00:000.8

[DimDate]

FechaIsWeekend
05/10/2020 00:00Falso
06/10/2020 00:00Falso
07/10/2020 00:00Falso
08/10/2020 00:00Falso
09/10/2020 00:00Falso
10/10/2020 00:00Verdad
11/10/2020 00:00Verdad
12/10/2020 00:00Falso
13/10/2020 00:00Falso
14/10/2020 00:00Falso
15/10/2020 00:00Falso
16/10/2020 00:00Falso
17/10/2020 00:00Verdad
18/10/2020 00:00Verdad
19/10/2020 00:00Falso
20/10/2020 00:00Falso
21/10/2020 00:00Falso
22/10/2020 00:00Falso
23/10/2020 00:00Falso
24/10/2020 00:00Verdad
25/10/2020 00:00Verdad
26/10/2020 00:00Falso
27/10/2020 00:00Falso
28/10/2020 00:00Falso
29/10/2020 00:00Falso
30/10/2020 00:00Falso
31/10/2020 00:00Verdad
01/11/2020 00:00Verdad
02/11/2020 00:00Falso
03/11/2020 00:00Falso
04/11/2020 00:00Falso
05/11/2020 00:00Falso
06/11/2020 00:00Falso

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.