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 buenas!
Tengo un inconveniente que no puedo resolver con Power Query.
En el trabajo hay un reporte de SAP en el cual están los pedidos de todos los clientes, con cantidades pedidas, stock de la referencia, fecha del pedido, etc.
ProductId Cliente Fecha de pedido Pedido Stock
123 | 1 | 01-feb | 10 | 300 |
123 | 2 | 03-feb | 25 | 300 |
123 | 3 | 01-ene | 35 | 300 |
123 | 4 | 02-may | 45 | 300 |
123 | 5 | 04-feb | 28 | 300 |
123 | 6 | 21-abr | 39 | 300 |
123 | 7 | 29-may | 60 | 300 |
123 | 8 | 02-jun | 90 | 300 |
123 | 9 | 11-jun | 75 | 300 |
456 | 1 | 26-ene | 10 | 200 |
456 | 2 | 18-ene | 25 | 200 |
456 | 3 | 19-jun | 20 | 200 |
456 | 45 | 28-feb | 20 | 200 |
456 | 6 | 21-mar | 75 | 200 |
456 | 7 | 25-abr | 5 | 200 |
456 | 8 | 09-jul | 3 | 200 |
456 | 9 | 27-oct | 6 | 200 |
456 | 10 | 15-dic | 7 | 200 |
456 | 11 | 20-jul | 8 | 200 |
78 | 5 | 18-jul | 99 | 100 |
799 | 8 | 01-may | 20 | 30 |
726 | 7 | 24-dic | 304 | 25 |
7444 | 56 | 02-sep | 3 | 3 |
24 | 2 | 19-ago | 56 | 57 |
El inconveniente es que si tengo 10 pedidos del mismo producto, en las 10 líneas tengo el valor del stock total. Mi objetivo es poder ir asignando ese stock según orden de arribo de los pedidos.
Saludos!
Solved! Go to Solution.
hola
Esta fórmula de columna calculada funciona
=MAX(if(Data[Stock]>CALCULATE(SUM(Data[order]),FILTER(Data,Data[Order date]<=EARLIER(Data[Order date])&&Data[ProductId]=EARLIER(Data[ProductId]))),Data[order],Data[Stock]-CALCULATE(SUM(Data[order]),FILTER(Data,Data[Order date]<EARLIER(Data[Order date])&&Data[ProductId]=EARLIER(Data[ProductId])))),0)
Buen día.
Adjunto la tabla ordenada por fecha, con formato dd/mm/aaaa para evitar confusiones
ProductId | Cliente | Fecha de pedido | Pedido | Stock |
24 | 2 | 19/08/2021 | 56 | 57 |
78 | 5 | 18/07/2021 | 99 | 100 |
123 | 3 | 01/01/2021 | 35 | 300 |
123 | 1 | 01/02/2021 | 10 | 300 |
123 | 2 | 03/02/2021 | 25 | 300 |
123 | 5 | 04/02/2021 | 28 | 300 |
123 | 6 | 21/04/2021 | 39 | 300 |
123 | 4 | 02/05/2021 | 45 | 300 |
123 | 7 | 29/05/2021 | 60 | 300 |
123 | 8 | 02/06/2021 | 90 | 300 |
123 | 9 | 11/06/2021 | 75 | 300 |
456 | 2 | 18/01/2021 | 25 | 200 |
456 | 1 | 26/01/2021 | 10 | 200 |
456 | 45 | 28/02/2021 | 20 | 200 |
456 | 6 | 21/03/2021 | 75 | 200 |
456 | 7 | 25/04/2021 | 5 | 200 |
456 | 3 | 19/06/2021 | 20 | 200 |
456 | 8 | 09/07/2021 | 3 | 200 |
456 | 11 | 20/07/2021 | 8 | 200 |
456 | 9 | 27/10/2021 | 6 | 200 |
456 | 10 | 15/12/2021 | 7 | 200 |
726 | 7 | 24/12/2021 | 304 | 25 |
799 | 8 | 01/05/2021 | 20 | 30 |
7444 | 56 | 02/09/2021 | 3 | 3 |
Hola @Syndicate_Admin ,
Este tema es factible pero bastante avanzado en PQ. Desafortunadamente no le proporcionaré todo el código PQ, pero al menos puedo darle algunas funciones que necesitará:
1. Necesitará Agrupar por en todas las filas. Con la combinación de la columna de índice, podrá hacer una suma cummulativa en un ID de producto específico si es necesario.
2. Más tarde también necesitarás alguna columna condtitional, donde evalúes la diferencia entre Stock y Cummulative Sum
Puedo proporcionarle algunas sugerencias detalladas si lo desea, pero como dije, este tema es un poco difícil, por lo que podría considerar el uso de DAX en su lugar.
Hola @Syndicate_Admin ,
Puede por favor mostrarme vuestra producción deseada para por ejemplo ProductID 123?
Sería algo asi el resultado esperado:
ProductId | Cliente | Fecha de pedido | Pedido | Stock | Resultado Esperado |
123 | 1 | 01-feb | 10 | 300 | 10 |
123 | 2 | 03-feb | 25 | 300 | 25 |
123 | 3 | 01-ene | 35 | 300 | 35 |
123 | 4 | 02-may | 45 | 300 | 45 |
123 | 5 | 04-feb | 28 | 300 | 28 |
123 | 6 | 21-abr | 39 | 300 | 39 |
123 | 7 | 29-may | 60 | 300 | 60 |
123 | 8 | 02-jun | 90 | 300 | 58 |
123 | 9 | 11-jun | 75 | 300 | 0 |
Va asignando stock a cada cliente hasta cubrir las 300 unidades. Para el 8vo pedido tengo restantes solo 58 unidades, pero el pedido es de 90, por lo que asigno las 58 disponibles y al último pedido no asigno nada (Ya que las 300 fueron asignadas a pedidos anteriores)
¿Cómo se interpreta el 01-uno, el 26-uno, el 11-1 de junio? Además, ¿no debería ordenarse la fecha del pedido en orden ascendente por ProductID? Comparta un conjunto de datos limpio revisado.
Buen día.
Adjunto el conjunto de datos ordenado por fecha, y con formato dd/mm/aaaa para evitar confusiones
ProductId | Cliente | Fecha de pedido | Pedido | Stock | Resultado Esperado |
123 | 3 | 01/01/2021 | 35 | 300 | 35 |
123 | 1 | 01/02/2021 | 10 | 300 | 10 |
123 | 2 | 03/02/2021 | 25 | 300 | 25 |
123 | 5 | 04/02/2021 | 28 | 300 | 28 |
123 | 6 | 21/04/2021 | 39 | 300 | 39 |
123 | 4 | 02/05/2021 | 45 | 300 | 45 |
123 | 7 | 29/05/2021 | 60 | 300 | 60 |
123 | 8 | 02/06/2021 | 90 | 300 | 58 |
123 | 9 | 11/06/2021 | 75 | 300 | 0 |
Saludos y gracias
hola
Esta fórmula de columna calculada funciona
=MAX(if(Data[Stock]>CALCULATE(SUM(Data[order]),FILTER(Data,Data[Order date]<=EARLIER(Data[Order date])&&Data[ProductId]=EARLIER(Data[ProductId]))),Data[order],Data[Stock]-CALCULATE(SUM(Data[order]),FILTER(Data,Data[Order date]<EARLIER(Data[Order date])&&Data[ProductId]=EARLIER(Data[ProductId])))),0)
Excelente! En Power Pivot funciona de 10.
Tenés idea que modificación habría que hacer para que funcione en Power BI?
También funcionará en PowerBI Desktop. Si mi respuesta anterior ayudó, por favor márquela como Respuesta.
Sisi, la marqué como respuesta. Muchas gracias!
hola
Si mi respuesta ayudó, por favor márquela como Respuesta.
hola
Puedo resolver este problema con una fórmula de columna calculada en DAX (no power query). ¿Te interesaría?
Si por favor, me vendría muy bien la solución por DAX
Muchas gracias!
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 | |
2 | |
2 | |
2 | |
1 |