Microsoft Fabric Community Conference 2025, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount.
Register nowThe Power BI DataViz World Championships are on! With four chances to enter, you could win a spot in the LIVE Grand Finale in Las Vegas. Show off your skills.
Hola
Tengo el siguiente problema y necesito una solución para solucionarlo con Power Query:
Ich tiene diferentes versiones (22.1, 22.2, 22.3 , 22.4, 23.1, 23.2, 23.3, 23.4)
En cada lanzamiento se da la capacidad necesaria y la capacidad disponible.
Ahora quiero calcular el superávit y el backlog para estas capacidades:
El excedente es sólo [capacidad necesaria] - [capacidad disponible]
El backlog debe agregar el valor del backlog del paso anterior + excedente. Si esto es negativo, debe establecerse en 0
Ejemplo:
Liberar la capacidad necesaria Capacidad disponible Excedente de trabajo pendiente Descripción
22,1 35 30 5 5 5 días de estancia en el trabajo atrasado porque la capacidad disponible es inferior a la capacidad necesaria
22.2 40 30 10 15 10 días desde la versión actual + 5 días desde el retraso en el paso anterior
22,3 20 30 -10 5 El trabajo atrasado se reduce en 10 días
22,4 10 30 -20 0 El trabajo pendiente se reduce a 0 porque quedan 20 días en la versión, pero sólo 5 días estaban en el trabajo pendiente
23.1 45 30 15 15 15 días a partir de esta versión entran en el backlog
23,2 30 30 0 15 15 días de estancia en el trabajo atrasado
23.3 25 30 -5 10 5 días en esta versión están disponibles para reducir el trabajo pendiente
23.4 10 30 -20 0 20 días están disponibles en esta versión, lo que reduce el trabajo pendiente a 0
Así que mi pregunta es: Cómo resolver esto en Power Query (calcular la columna de trabajo pendiente en función del valor del trabajo pendiente anterior)
Espero sus respuestas 🙂
Genial, gracias por esta solución
Power Query no tiene ningún concepto de "anterior". Debe indicar lo que eso significa en su escenario, idealmente agregando una columna de índice. Puede eliminar las columnas que no forman parte del problema.
A partir de ahí es un List.Accumulate estándar para calcular el valor del backlog:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjLSM1TSUTI2BREGSrE6YCEjIM/EAEXIGMgzQhUyAfIMkYWMwWaZmKIIGUF4yEJgs1BVoZgVCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Release = _t, #"Needed Capacity" = _t, #"Available Capacity" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Needed Capacity", Int64.Type}, {"Available Capacity", Int64.Type}}),
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 0, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Backlog", each List.Accumulate({0..[Index]},0,(state,current)=> List.Max({0, state + #"Added Index"[Needed Capacity]{current}-#"Added Index"[Available Capacity]{current}})))
in
#"Added Custom"