Power Query (M язык) 50-дневная скользящая средняя - PullRequest
0 голосов
/ 25 марта 2019

У меня есть список продуктов, и я хотел бы получить 50-дневное простое скользящее среднее его объема, используя Power Query (M).

Таблица отсортирована по названию и дате продукта.Я добавил пользовательский столбец и применил приведенный ниже код.

if [date] >= #date(2018,1,29)
then List.Average(List.Range(Source[Volume],[Volume]-1,-50))
else ""

Поскольку он уже отсортирован по дате и имени, был применен оператор if с датой в качестве критерия / фильтра.Однако возникает ошибка, в которой говорится, что

столбец «Том» не найден в таблице.

Я ожидаю, что в силовом запросе будет добавлен столбец с 50-дневной скользящей средней для каждого продукта.расчет должен быть выполнен, если date больше или равно 29 января 2018 года.

Ответы [ 2 ]

0 голосов
/ 31 марта 2019

Наконец-то!нашел решение.Сначала примените Индекс по продукту , см. Этот пост для получения более подробной информации. Затем выполните индексирование без критериев (индексируйте все строки). Затем примените приведенный ниже код

= Table.AddColumn(#"Previous Step", "Volume SMA(50)", each if [Index_byProduct] >= 50 then List.Average(List.Range(#"Previous Step"[Volume], ([Index_All]-50),50)) else 0),

Для большихнабор данных, Table.Buffer функция рекомендуется после шага расширения индекса, чтобы улучшить скорость вычисления PQ

0 голосов
/ 25 марта 2019

Мы не знаем, каковы ваши столбцы, но, если у вас есть [продукт], [дата] и [объем] в источнике, это будет в среднем последние 50 дней [объема] для идентичного [продукта] на основе каждый [дата] и место в новом столбце

AvgAmountAdded = Table.AddColumn(Source, "AverageAmount", (i) => List.Average(Table.SelectRows(Source, each ([product] = i[product] and [date]<=i[date] and [date]>=Date.AddDays(i[date],-50)))[volume]), type number)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...