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
Thim
Resolver V
Resolver V

Asignar recursos limitados por día

Hola a todos.

Tengo un pequeño desafío, espero que todos ustedes, gente inteligente, puedan ayudarme. 🙂

He hecho un informe para una de nuestras líneas de productos, pero estoy colgado con la parte final.

Quiero ver cuando la línea tiene horas libres, así que sabemos cuándo podemos reservar otros pedidos.

En este momento, el libro de informes todas las horas por fecha de envío, no concidendo las horas máximas que podemos usar.

Necesito una fórmula de Dax que mueva horas overbooked a la fecha anterior si, el día del envío está lleno.

Así que si hemos reservado 5 horas más de lo que la línea puede gestionar el 15/10, entonces esas 5 horas deben asignarse al 14/10. Si eso deja 2 horas más de las que podemos manejar el 14/10, entonces esas horas deben ser asignadas a 13/10 (Hoy)

Una vez que lleguemos hoy, todas las horas restantes deben ser colocadas allí no importa qué.

De esa manera podemos detectar fácilmente si hemos overbooked la línea.

Aquí hay un ejemplo de cómo se ve, y lo que necesito. Por ejemplo, las horas máximas disponibles cada día son 11.

image.png

Aquí están los datos sin procesar falsos, puede poner en Power BI. 🙂

Fecha de entregaProyectoHoras
14-10-2020A2
15-10-2020B7
16-10-2020C5
14-10-2020D4
17-10-2020E6
17-10-2020F9
14-10-2020G4
17-10-2020H8

Espero que alguien tenga una idea brillante para este tema. 🙂

1 ACCEPTED SOLUTION
v-alq-msft
Community Support
Community Support

Hola, @Thim

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

T1:

f1.png

T2:

f2.png

T3:

f3.png

Puede crear una nueva consulta en blanco con los siguientes códigos m.

(tab as table)=>
let
    Source = tab,
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Delivery Date", type date}, {"Project", type text}, {"Hours", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Delivery Date"}, {{"TotalHours", each List.Sum([Hours]), type nullable number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let 
date = [Delivery Date],
list = Table.SelectRows(
    #"Grouped Rows",
    each [Delivery Date]>=date
)[TotalHours],
s = List.Reverse(list),
val = List.Accumulate(
        s,
        0,
        (s,c)=>if s+c>11 then s+c-11 else 0

)
in
val
),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each let  
d = [Delivery Date],
v = Table.SelectRows(#"Added Custom",each [Delivery Date]>d),
x = Table.Min(v,"Delivery Date")[Custom]
in
if [Delivery Date]=List.Min(#"Added Custom"[Delivery Date])
then if [Custom]>0 then 11+[Custom] else [TotalHours]
else if [Custom]>0 then 11 else x+[TotalHours])
in
    #"Added Custom1"

A continuación, puede invocar la función introduciendo el parámetro 'T1', 'T2', 'T3' y obtener tres tablas.

f4.png

f5.png

f6.png

Saludos

Allan

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

View solution in original post

6 REPLIES 6
v-alq-msft
Community Support
Community Support

Hola, @Thim

Según su descripción, creé datos para reproducir su escenario. El archivo pbix se adjunta al final.

T1:

f1.png

T2:

f2.png

T3:

f3.png

Puede crear una nueva consulta en blanco con los siguientes códigos m.

(tab as table)=>
let
    Source = tab,
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Delivery Date", type date}, {"Project", type text}, {"Hours", Int64.Type}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Delivery Date"}, {{"TotalHours", each List.Sum([Hours]), type nullable number}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each let 
date = [Delivery Date],
list = Table.SelectRows(
    #"Grouped Rows",
    each [Delivery Date]>=date
)[TotalHours],
s = List.Reverse(list),
val = List.Accumulate(
        s,
        0,
        (s,c)=>if s+c>11 then s+c-11 else 0

)
in
val
),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each let  
d = [Delivery Date],
v = Table.SelectRows(#"Added Custom",each [Delivery Date]>d),
x = Table.Min(v,"Delivery Date")[Custom]
in
if [Delivery Date]=List.Min(#"Added Custom"[Delivery Date])
then if [Custom]>0 then 11+[Custom] else [TotalHours]
else if [Custom]>0 then 11 else x+[TotalHours])
in
    #"Added Custom1"

A continuación, puede invocar la función introduciendo el parámetro 'T1', 'T2', 'T3' y obtener tres tablas.

f4.png

f5.png

f6.png

Saludos

Allan

Si este post ayuda,entonces considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

Salud. Justo lo que necesitaba. 🙂

Fowmy
Super User
Super User

@Thim

¿Puede agregar esto como una medida y probar?

Total Hours Allocated = 
VAR _LastestDate = CALCULATE(MIN(Booking[Delivery Date]),ALLSELECTED(Booking[Delivery Date]))
VAR _CountAll = CALCULATE(COUNTROWS(VALUES(Booking[Delivery Date])),Booking[Delivery Date])
VAR _TotalHours = CALCULATE(SUM(Booking[Hours]),ALLSELECTED(Booking[Delivery Date]))
return

IF(
    MAX(Booking[Delivery Date]) <> _LastestDate,
    11,
    _TotalHours - (11 * _CountAll- 1 ) + SUM(Booking[Hours])
)

Fowmy_0-1602592463458.png

________________________

Si mi respuesta fue útil, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla

Haga clic en el icono Thumbs-Up si le gusta esta respuesta 🙂

Youtube Linkedin



Did I answer your question? Mark my post as a solution! and hit thumbs up


Subscribe and learn Power BI from these videos

Website LinkedIn PBI User Group

Gracias por la respuesta, y ayudar. 🙂

La medida funciona, cuando hemos overbooked la línea, pero una vez que hay horas libres se pone un poco funky.

Aquí hay un ejemplo del resultado, cuando retoque las horas reservadas.

image.png

En esta situación, simplemente debe aceptar todas las fechas con sus horarios reservados, ya que todos los días son belov 11.

@Thim

mostrar todos los escenarios y los resultados esperados.

________________________

Si mi respuesta fue útil, considere Aceptarla como la solución para ayudar a los otros miembros a encontrarla

Haga clic en el icono Thumbs-Up si le gusta esta respuesta 🙂

Youtube Linkedin

Did I answer your question? Mark my post as a solution! and hit thumbs up


Subscribe and learn Power BI from these videos

Website LinkedIn PBI User Group

El primer ejemplo, es cuando hemos overbooked.

Segundo ejemplo, es cuando 1 día está overbooked.

tercer ejemplo, es cuando varios días están overbooked, pero hay días en el medio.

image.png

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.