Power Query - средневзвешенное значение - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть следующая таблица в Power Query, которая содержит количество купленного товара и его цену:

enter image description here

Я хочу создать еще одну треть столбец с текущей средней ценой покупки, однако мне нужно рассмотреть историю, и среднее значение должно быть взвешено:

enter image description here

Кто-нибудь может мне помочь?

1 Ответ

1 голос
/ 20 апреля 2020

Чтобы рассчитать текущее средневзвешенное значение, вам просто нужно сгенерировать столбец промежуточных итоговых затрат (Цена х Количество) и столбец количественного итогового итога, а затем разделить один на другой:

Существуют различные способы сделайте это, и вам не нужно делать это, добавляя столбцы в таблицу, но я сделал это, чтобы вы могли изучить соответствующие шаги.

M-код

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Month", type text}, {"Quantity", Int64.Type}, {"Price", type number}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1),
    #"Added Custom" = Table.AddColumn(#"Added Index", "Cost", each [Quantity]*[Price]),
    #"Added Custom1" = Table.AddColumn(#"Added Custom", "runTotCost", each List.Sum(List.Range(#"Added Custom"[Cost],0,[Index]))),
    #"Added Custom2" = Table.AddColumn(#"Added Custom1", "runTotQuant", each List.Sum(List.Range(#"Added Custom"[Quantity],0,[Index]))),
    #"Added Custom3" = Table.AddColumn(#"Added Custom2", "Weighted Average", each [runTotCost] / [runTotQuant]),
    #"Removed Columns" = Table.RemoveColumns(#"Added Custom3",{"Index", "Cost", "runTotCost", "runTotQuant"}),
    #"Changed Type1" = Table.TransformColumnTypes(#"Removed Columns",{{"Weighted Average", type number}})
in
    #"Changed Type1"

enter image description here

Для лучшего понимания я предлагаю вам выполнить целочисленный rnet поиск методов генерации промежуточных итогов. Существуют и другие методы, более сложные, но более эффективные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...