cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
MauroLB
Frequent Visitor

Distribución de stock por fecha de pedido

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

123101-feb10300
123203-feb25300
123301-ene35300
123402-may45300
123504-feb28300
123621-abr39300
123729-may60300
123802-jun90300
123911-jun75300
456126-ene10200
456218-ene25200
456319-jun20200
4564528-feb20200
456621-mar75200
456725-abr5200
456809-jul3200
456927-oct6200
4561015-dic7200
4561120-jul8200
78518-jul99100
799801-may2030
726724-dic30425
74445602-sep33
24219-ago5657

 

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!

 

1 ACCEPTED 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)

Untitled.png

View solution in original post

13 REPLIES 13
MauroLB
Frequent Visitor

Buen día.

Adjunto la tabla ordenada por fecha, con formato dd/mm/aaaa para evitar confusiones

 

ProductId Cliente Fecha de pedidoPedido  Stock
24219/08/20215657
78518/07/202199100
123301/01/202135300
123101/02/202110300
123203/02/202125300
123504/02/202128300
123621/04/202139300
123402/05/202145300
123729/05/202160300
123802/06/202190300
123911/06/202175300
456218/01/202125200
456126/01/202110200
4564528/02/202120200
456621/03/202175200
456725/04/20215200
456319/06/202120200
456809/07/20213200
4561120/07/20218200
456927/10/20216200
4561015/12/20217200
726724/12/202130425
799801/05/20212030
74445602/09/202133

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.

Syndicate_Admin
Administrator
Administrator

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 pedidoPedido  StockResultado Esperado
123101-feb1030010
123203-feb2530025
123301-ene3530035
123402-may4530045
123504-feb2830028
123621-abr3930039
123729-may6030060
123802-jun9030058
123911-jun753000

 

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 pedidoPedido  StockResultado Esperado
123301/01/20213530035
123101/02/20211030010
123203/02/20212530025
123504/02/20212830028
123621/04/20213930039
123402/05/20214530045
123729/05/20216030060
123802/06/20219030058
123911/06/2021753000

 

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)

Untitled.png

View solution in original post

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!

Helpful resources

Announcements
PBI_User Group Leader_768x460.jpg

Manage your user group events

Check out the News & Announcements to learn more.

Get Ready for Power BI Dev Camp

Microsoft named a Leader in The Forrester Wave

Microsoft received the highest score of any vendor in both the strategy and current offering categories.

Get Ready for Power BI Dev Camp

Power BI Dev Camp - September 30th, 2021

Mark your calendars and join us for our next Power BI Dev Camp!

PowerPlatform 768x460.png

Microsoft Learn

Check out our new Discover Your Career Path blog post series and get all the details.

Top Solution Authors