Страницы: 1
RSS
DAX PP. Подсчет с учетом предыдущего значения.
 
Друзья, добрый день!
Помогите, пожалуйста. Во вложении табличка с планами на оставшиеся 2 месяца тек. года и  12 месяцев 21 года. И данные о кол-ве остатка на тек месяц (ноябрь).
Далее простецкая формула для вычисления того, сколько нужно привезти в следующем месяца.
Для следующего месяца (сейчас это ноябрь)  значение считается по одной формуле = Остаток  - План на Ноябрь + Ср. план на оставшиеся месяца. (Среднее по всем будущим месяца).
Для всех остальных месяцев  = Значение предыдущего - План след месяц + Ср. план на оставшиеся месяца. (т.е. для декабря берется значение полученное для ноября).
В примере все подробно расписал, написал меры для скользящего среднего на каждый месяц и кол-во к отгрузке для 11 (след. месяца) месяца.
Но вот как ссылаться на это значение не понимаю, чтобы 11 вычислялся одним способом, а значение всех остальных по с его использованием.
Спасибо.

ЗЫ Эксель в архиве, потому что весит 300 кб, (видимо из-за pp, так там пример по 1 строке)
Изменено: OblivionR - 29.10.2020 11:42:15
 
Доброе время суток.
Вариант
Скрытый текст
 
Интересно, что не так?
 
Андрей, извините, что не отвечаю! Никак не смог ещё ваш вариант опробовать, обязательно отпишусь и благодарен вам за уделённое на вопрос время!
 
Андрей VG, Добрый день! Сразу видно что делал профессионал, все работает как нужно. Не знал, что можно переменные задавать внутри формул.
Вот еще один вариант решения, но проще чем ваш я думаю
Код
к отгрузке fff:=Var Ostatok = max('Справочник_номенклатуры'[Конечный остаток])
Var maxdate = max('Calendar'[Date])
Var MinDate = date(2020; MONTH(TODAY())+1;01)
Var Avg_Ostatok =
   CALCULATE(
      SUMX(
      ADDCOLUMNS(
         SUMMARIZE(
            'План';
            'Calendar'[MMM-YYYY]
            );
         "Avg";
            [Ср. остаток на ост. мс-а]
            );
            [Avg]
            );
         DATESBETWEEN('Calendar'[Date]; MinDate; maxdate)
         )

Var Plan =
   CALCULATE(
         sum('План'[Плановое значение]);
         DATESBETWEEN('Calendar'[Date]; MinDate; maxdate)
         )
Var Result=
Ostatok-Plan+Avg_Ostatok
return
if(maxdate>=MinDate;Result)
 
OblivionR, а какой вариант на ваших реальных данных быстрее? SUMMARIZE, по идее, не самый быстрый способ агрегировать значения.
Изменено: PooHkrd - 02.11.2020 12:30:53
Вот горшок пустой, он предмет простой...
 
PooHkrd, данных не так много, чтобы скорость имела значение, около 100 строк и план до 12.2021.  
 
Цитата
OblivionR написал:
делал профессионал
Не угадали - я дилетант. На работе не использую DAX совсем. Просто интересно это направление.
Успехов.
 
Цитата
Андрей VG написал:
VAR MonthEndOfCurMinDate =    CALCULATETABLE (        ENDOFMONTH ( VALUES ( 'Календарь'[Date] ) );        'Календарь'[Date] = curMinDate    )
А вот этот момент не поясните? Почему бы просто не указать MAX('Календарь'[Date]) результат же такой же в итоге
 
Цитата
OblivionR написал:
А вот этот момент не поясните?
Это остаток от проверки ENDOFMONTH - вычисляет конец месяца или берёт последнее значение в календаре по месяцу. Оказалось второе. Естественно, на полном календаре и на измерениях месяцев лучше пользоваться
Цитата
OblivionR написал:
MAX('Календарь'[Date])
 
Цитата
Андрей VG написал:
Не угадали - я дилетант.
В моих глазах  по DAX и M вы Йода, но если это для вас дилетантский уровень, то , позвольте, поинтересоваться, каким ремеслом вы занимаетесь профессионально?
 
Цитата
Lari написал:
Йода
Йоды - это итальянцы и разработчики DAX :)  
Цитата
Lari написал:
каким ремеслом вы занимаетесь профессионально?
программирую уже четвёртый год на ArisScript.
Страницы: 1
Наверх