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

Calculando la capacidad restante, si el empleado no tiene trabajo, devuelva el

Hola amigos,

Por favor, puede echar un vistazo a lo siguiente y ver si puede ayudarme a resolver este problema, si necesita más detalles, hágamelo saber.

Planteamiento del problema: Me encuentro con un problema con una medida de DAX en mi modelo de Power BI en el que no devuelve el resultado esperado de 5 (capacidad máxima) cuando un empleado no tiene ningún trabajo asignado esa semana.

Fondo:

  • Tengo un modelo de Power BI que incluye dos tablas: F_Capacity y DIM_Team_Details.
  • La medida en cuestión, llamada "Capacidad restante", calcula la capacidad restante para cada empleado y semana en función de ciertas condiciones, incluidos los "Días consumidos".
  • La intención es devolver 5 cuando "Días consumidos" esté en blanco o cero, lo que indica que no hay trabajo para esa semana.

Lo que he probado:

  • He intentado varias fórmulas y medidas de DAX para controlar explícitamente los valores en blanco o cero en "Días consumidos", pero no he logrado el resultado deseado.
  • Me he asegurado de que la columna "Días consumidos" sea del tipo de datos correcto (numérico) en ambas tablas.
  • He validado los datos y confirmado que, efectivamente, hay casos en los que los "Días consumidos" están en blanco o son cero.

Ejemplo de la medida: Esta es la medida del DAX que he estado usando:

Capacidad restante = 
VAR MaxCapacityTable = SUMMARIZE(DIM_Team_Details, DIM_Team_Details[EmployeeID], DIM_Team_Details[Capacidad máxima], DIM_Team_Details[Fecha de inicio], DIM_Team_Details[Fecha de finalización])
DEVOLUCIÓN
SUMX(
ADDCOLUMNS(
RESUMIR(
F_Capacity,
F_Capacity[ID de empleado],
DIM_Calendar[Week_Commencing]
),
"Capacidad máxima",
MAXX(FILTER(MaxCapacityTable, F_Capacity[EmployeeID] = DIM_Team_Details[EmployeeID]), DIM_Team_Details[Capacidad máxima]),
"Fecha de inicio",
MINX(FILTER(MaxCapacityTable, F_Capacity[EmployeeID] = DIM_Team_Details[EmployeeID]), DIM_Team_Details[Fecha de inicio]),
"Fecha de finalización",
MAXX(FILTER(MaxCapacityTable, F_Capacity[EmployeeID] = DIM_Team_Details[EmployeeID]), DIM_Team_Details[Fecha de finalización])
),
SI(
[Fecha de inicio] > [Week_Commencing] || [Fecha de finalización] < [Week_Commencing],
0,
SI(
ISBLANK([Días consumidos]) || [Días consumidos] = 0,
5,
SI(
[Días consumidos] <= [Capacidad máxima],
[Capacidad máxima] - [Días consumidos],
0
)
)
)
)

A continuación se muestran las tablas que estoy usando

Joynul_0-1696972703524.pngJoynul_1-1696972736697.png

Joynul_2-1696972776208.png

Finalmente, este es el script que estoy usando para la medida Días consumidos

Días consumidos = 

SUMX(

RESUMIR(

F_Capacity,

F_Capacity[ID de empleado],

DIM_Calendar[Week_Commencing],

"Total de días de trabajo", SUMA(F_Capacity[Days_Worked])

),

[Total de días laborables]

)
 

Gracias de antemano por echarle un vistazo a esto.

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Para su información, este script ha resuelto la pregunta

Filtro EmployeeID = 

DÓNDE Fecha actual = ..MAX(DIM_Calendar[Week_Commencing])

DÓNDE CurrentDateID = LOOKUPVALUE(DIM_Calendar[ID de fecha],DIM_Calendar[Week_Commencing],CALCULAR(..MAX(DIM_Calendar[Week_Commencing]), FILTRO(DIM_Calendar, DIM_Calendar[Week_Commencing] <= Fecha actual)))

DÓNDE Recuento de semanas = CALCULAR(CUENTA(DIM_Calendar[ID de fecha]))

DÓNDE MaxCapacity (Capacidad máxima) =

CALCULAR(SUMA(Dim_Team_Details[Capacidad máxima]),

FILTRO(

Dim_Team_Details,



Fecha actual >= Dim_Team_Details[Fecha de inicio] &&

Fecha actual <= Dim_Team_Details[Fecha de finalización]

)

) * Recuento de semanas

DÓNDE FilteredCapacity =

CALCULAR(SUMA(F_Capacity[Days_Worked]),

FILTRO(

F_Capacity,

F_Capacity[ID de fecha] <= CurrentDateID



)



)



DEVOLUCIÓN

FilteredCapacity / MaxCapacity (Capacidad máxima)

View solution in original post

Syndicate_Admin
Administrator
Administrator

Para su información, este script logra resolver la pregunta

Prueba de límite restante = 

DÓNDE FechaActual = ..MAX(DIM_Calendar[Week_Commencing])

DÓNDE CurrentDateID = LOOKUPVALUE(DIM_Calendar[DateID],DIM_Calendar[Week_Commencing],CALCULAR(..MAX(DIM_Calendar[Week_Commencing]), FILTRO(DIM_Calendar, DIM_Calendar[Week_Commencing] <= CurrentDate)))

DÓNDE WeekCount = CALCULAR(CUENTA(DIM_Calendar[DateID]))

DÓNDE MaxCapacity =

CALCULAR(SUMA(Dim_Team_Details[Capacidad máxima]),

FILTRO(

Dim_Team_Details,



CurrentDate >= Dim_Team_Details[Fecha de inicio] &&

CurrentDate <= Dim_Team_Details[Fecha de finalización]

)

) * Recuento de semanas

DÓNDE Capacidad filtrada =

CALCULAR(SUMA(F_Capacity[Days_Worked]),

FILTRO(

F_Capacity,

F_Capacity[DateID] <= CurrentDateID



)



)



DEVOLUCIÓN

MaxCapacity: FilteredCapacity

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

Para su información, este script logra resolver la pregunta

Prueba de límite restante = 

DÓNDE FechaActual = ..MAX(DIM_Calendar[Week_Commencing])

DÓNDE CurrentDateID = LOOKUPVALUE(DIM_Calendar[DateID],DIM_Calendar[Week_Commencing],CALCULAR(..MAX(DIM_Calendar[Week_Commencing]), FILTRO(DIM_Calendar, DIM_Calendar[Week_Commencing] <= CurrentDate)))

DÓNDE WeekCount = CALCULAR(CUENTA(DIM_Calendar[DateID]))

DÓNDE MaxCapacity =

CALCULAR(SUMA(Dim_Team_Details[Capacidad máxima]),

FILTRO(

Dim_Team_Details,



CurrentDate >= Dim_Team_Details[Fecha de inicio] &&

CurrentDate <= Dim_Team_Details[Fecha de finalización]

)

) * Recuento de semanas

DÓNDE Capacidad filtrada =

CALCULAR(SUMA(F_Capacity[Days_Worked]),

FILTRO(

F_Capacity,

F_Capacity[DateID] <= CurrentDateID



)



)



DEVOLUCIÓN

MaxCapacity: FilteredCapacity
Syndicate_Admin
Administrator
Administrator

Para su información, este script ha resuelto la pregunta

Filtro EmployeeID = 

DÓNDE Fecha actual = ..MAX(DIM_Calendar[Week_Commencing])

DÓNDE CurrentDateID = LOOKUPVALUE(DIM_Calendar[ID de fecha],DIM_Calendar[Week_Commencing],CALCULAR(..MAX(DIM_Calendar[Week_Commencing]), FILTRO(DIM_Calendar, DIM_Calendar[Week_Commencing] <= Fecha actual)))

DÓNDE Recuento de semanas = CALCULAR(CUENTA(DIM_Calendar[ID de fecha]))

DÓNDE MaxCapacity (Capacidad máxima) =

CALCULAR(SUMA(Dim_Team_Details[Capacidad máxima]),

FILTRO(

Dim_Team_Details,



Fecha actual >= Dim_Team_Details[Fecha de inicio] &&

Fecha actual <= Dim_Team_Details[Fecha de finalización]

)

) * Recuento de semanas

DÓNDE FilteredCapacity =

CALCULAR(SUMA(F_Capacity[Days_Worked]),

FILTRO(

F_Capacity,

F_Capacity[ID de fecha] <= CurrentDateID



)



)



DEVOLUCIÓN

FilteredCapacity / MaxCapacity (Capacidad máxima)
Syndicate_Admin
Administrator
Administrator

Consulte los datos a continuación.

Nombre de la tabla - F_Capacity
Days_WorkedUtilisationIDIdentificación de empleadoUserStoryID

EpicID

DateID (Id. de fecha)Gastos de capital previstosPorcentaje utilizado
1162491242139020.00%
0.5167191242119510.00%
310210912422117060.00%
0.5168191242219510.00%
0.5187291242219510.00%
0.511129124219510.00%
31261091242117060.00%
0.519719124219510.00%
0.511229124319510.00%
31271091243117060.00%

Nombre de la tabla: Dim_Team_Details
NombreTítuloFecha de inicioFecha finalTítulo cortoIdentificación de empleadoCapacidad máxima
Juan Pérez2 - Autoridad de diseño01-Ene-2001-Dic-22Autoridad15
Chico al azar2 - Autoridad de diseño01-jun-2201-May-40Autoridad25
Gato Azul4 - Analista01-Ago-2301-May-40Analista35
Jane Doe4 - Analista01-May-2001-May-40Analista45
Juan Fulano4 - Analista01-May-2001-Sep-23Analista55

Nombre de la tabla - DIM_Calendar

DateID (Id. de fecha)Week_CommencingMesEjercicioCuarto
127-mar-2301-Mar-23AÑO FISCAL 22/23Pregunta 4
203-Abr-2301-Abr-23Año fiscal 23/24Pregunta 1
310-Abr-2301-Abr-23Año fiscal 23/24Pregunta 1
417-Abr-2301-Abr-23Año fiscal 23/24Pregunta 1
524-Abr-2301-Abr-23Año fiscal 23/24Pregunta 1
601-May-2301-Abr-23Año fiscal 23/24Pregunta 1
708-mayo-2301-May-23Año fiscal 23/24Pregunta 1
815-mayo-2301-May-23Año fiscal 23/24Pregunta 1
922-mayo-2301-May-23Año fiscal 23/24Pregunta 1
1029-mayo-2301-May-23Año fiscal 23/24Pregunta 1
1105-jun-2301-jun-23Año fiscal 23/24Pregunta 1
1212-jun-2301-jun-23Año fiscal 23/24Pregunta 1
1319-jun-2301-jun-23Año fiscal 23/24Pregunta 1
1426-jun-2301-jun-23Año fiscal 23/24Pregunta 1
1503-jul-2301-jul-23Año fiscal 23/24Pregunta 2
1610-jul-2301-jul-23Año fiscal 23/24Pregunta 2
1717-jul-2301-jul-23Año fiscal 23/24Pregunta 2
1824-jul-2301-jul-23Año fiscal 23/24Pregunta 2
1931-jul-2301-jul-23Año fiscal 23/24Pregunta 2
2007-Ago-2301-Ago-23Año fiscal 23/24Pregunta 2
2114-Ago-2301-Ago-23Año fiscal 23/24Pregunta 2
2221-Ago-2301-Ago-23Año fiscal 23/24Pregunta 2
2328-Ago-2301-Ago-23Año fiscal 23/24Pregunta 2
2404-sep-2301-Sep-23Año fiscal 23/24Pregunta 2
2511-sep-2301-Sep-23Año fiscal 23/24Pregunta 2
2618-sep-2301-Sep-23Año fiscal 23/24Pregunta 2
2725-sep-2301-Sep-23Año fiscal 23/24Pregunta 2
2802-oct-2301-Oct-23Año fiscal 23/24

Pregunta 3

Syndicate_Admin
Administrator
Administrator

¿Puede proporcionar los datos en formato de texto?

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.