Excel Таблица заказов, подсчет промежуточного итога наличного запаса - PullRequest
0 голосов
/ 05 января 2019

Цель: Рассчитать текущую потребность по продукту, указанную по желаемой клиентом дате, чтобы узнать, какие заказы могут быть отправлены и в какой момент (будущая дата) имеющийся запас не будет поддерживать открытые заказы.

Данные: запрос Microsoft к базе данных Microsoft SQL возвращает таблицу MS Excel с заказами по отдельным позициям и начальным количеством в наличии.

Заказ может состоять из 900 различных продуктов в любом количестве, которое пожелает клиент.

Данные в порядке поступления (сортируются по желаемой дате). При ежедневном обновлении запроса будут выполнены полные номера заказов или конкретные позиции, которые будут удалены из таблицы. По мере поступления новых заказов они появляются в таблице (внизу). В целом, 900 продуктов с примерно 1100 открытыми позициями в любое время.

ORDER # | DESIRED DATE|  PRODUCT | QTY DUE | REM ON HAND | Cum Dmd

CO-32 | 1/3/19 | Ducks | 2  | 5 | 100 (all open orders)   
CO-32 | 1/3/19 | Chick | 100 | 3 | 100

CO-33 | 1/7/19 | Ducks | 2 | 3 | 102

CO-33 | 1/7/19 | CatsA | 5 | 15| 10

CO-33 | 1/8/19 | Chick | 10 | -7 | 110

CO-34 | 1/8/19 | CatsA | 2 | 13 | 12

CO-35 | 2/10/19| DogsA | 25 | 100 | 125

CO-35 | 2/10/19| Ducks | 25 | -22 | 127

Текущая проблема:
(A) Результирующий код Power Query, представленный ниже, приводит к новой вкладке, новой таблице, в которой пропущены строки - возвращается только около 677 строк исходных заказов на 1105 позиций.

(B) Код в запросе заблокирует клиентский процессор на 4-5 минут для циклического прохождения и набора данных.


Текущий код:

let
Source = Excel.CurrentWorkbook(){[Name="Orders"]}[Content],

#"Changed Type" = Table.TransformColumnTypes(Source,{{"PART", type text}, {"QTY DUE", Int64.Type}}),

AddIndex = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1),

RunTotal = Table.AddColumn(AddIndex, "Cum Dmd", each let PART=[PART], Index=[Index] 

in

List.Sum(Table.SelectRows(AddIndex, 
each [Index]<=Index and [PART]=PART)[QTY DUE])),

#"Removed Columns" = Table.RemoveColumns(RunTotal,{"Index"}),

#"Added Custom" = Table.AddColumn(#"Removed Columns", "Remain QOH", each [T ON HAND]-[Cum Dmd]),

#"Reordered Columns" = Table.ReorderColumns(#"Added Custom",{"ORDER", "CUSTOMER", "PART", "MISC_REFERENCE", "QTY DUE", "Remain QOH", "T ON HAND", "T Demand", "ORDER QTY", "SHIPPED QTY", "Customer DESIRE", "PROMISE", "Order Date", "ENTERED_BY", "Age", "Cum Dmd"})

in

#"Reordered Columns"

enter image description here

...