Страницы: 1
RSS
Расчет плана (графика) отгрузки с завода с учетом заданного плана продаж.
 
Добрый день, уважаемые форумчане.
Прошу помощи, уперся в меру расчета "Дефицита запасов".

Дано:
1. План продаж на каждый месяц,
2. Начальный запас товаров,
3. Остаток запасов на конец каждого месяца, с учетом плана продаж,
4. Поступление запасов = 0, в данном примере,
5. Срок поставки занимает 2,2 месяца, поэтому мера "План отгрузки с завода" сдвигает кол-во запасов на величину "Срока поставки",
6. План отгрузки с завода зависит от меры "Дефицит запасов", которая считается некорректно. А именно первый месяц дефицита товаров должен показать -3 (остаток запасов на конец предыдущего месяца - план продаж текущего месяца), в приложенном примере. Но он показывает -6.

Пример во вложении. Работа сделана на модели данных через Power Pivot.
Пример выложен на гугл диск. Ссылка ниже. Размер 2Mb

https://docs.google.com/spreadsheets/d/12ms3gs7Gec5S3Q0K9DP1eeTm-W6-VdFP/edit?usp=sharing&ou...
 
Уважаемые гуру эксель. Помогите пож-та решить задачку.
 
Виталий Бермес,
Я что-то пропустил Вашу тему. Сегодня времени нет, завтра гляну.
Но по описанию очень похоже на платное ТЗ :)
И дело не в том, что у Вас что-то не реализовано. А в том, чтобы что-то исправить/добавить нужно разобраться в Вашей модели и данных.
И далеко не факт, что это прям интересная для DAX задача :)
Изменено: surkenny - 21.09.2022 18:08:08
 
surkenny, я вас понимаю, на мой взгляд интерес в DAX в том, что огромное кол-во людей предпочитает решить задачу просто через эксель, иногда идя по сложному пути. Но ведь есть DAX, который как раз позволяет прописать логику решения и тот миллион людей, который занимается планированием отгрузок смогут это делать быстрее, точнее, легче. А чтобы это не выглядело, что я просто хочу оформить заказ, я большую часть сделал сам, прописав на тесте простые меры. Но вот с одной спотыкнулся и не могу дойти до ее решенияз( Если я могу облегчить свой вопрос и дать дополнительные пояснения, я буду рад это сделать)

С Уважением,
 
1.Почему таблицы "plan 22" и "plan23" разбиты на отдельные таблицы? Они идентичны, зачем искусственно усложнять расчеты? Объедините их в одну таблицу "Plan"
2. Дайте другим таблицам осмысленное название - нет абсолютно никакого желания разбираться, что у вас обозначают "MPL test", "PSL test", "Model test". Исправьте, тогда проще будет понять вашу модель данных и сделать решение, которое вам требуется
 
Vladimir Ch, прошу прощения, изменю на логичные название и упрощу модель

С Уважением,
 
Виталий Бермес, я и не говорил, что не нужно решать в PP. Я как раз за:)
Я говорил о том, что, чтобы Вам помочь, нужно много времени потратить на понимание Вашей модели. А само решение будет не сильно интересным для меня, потому что уже 1000 раз подобное выражение на Dax писал.
А если потраченное мной время не соответствует полученному удовлетворению от решения, то разницу может скомпенсировать только материальное поощрение :)
И я это заранее. Еще даже не смотрел Ваш пример.
Vladimir Ch уже отписался, поэтому до упрощенной модели и не буду смотреть :)
 
Ладно, по факту не все так сложно оказалось. Виталий Бермес, меры уже прописал, нужно было просто их подправить.
Во-первых, Виталий Бермес, когда пишите меры, всегда проверяйте их на ошибки - у Вас 2 ошибки:
1.
Код
Поступление заказов:=COUNT('MPL  test'[Model])

нужно заменить COUNT на COUNTA
2.
Код
Срок поставки:=IF([План продаж]<>0;MAX('Model  test'[Доставка 1])+MAX('Model  test'[Доставка 2]);BLANK())

тоже выдает ошибку. Вам нужно в PQ задать формат столбцов как число - сейчас текст.
Во-вторых,
Цитата
Виталий Бермес написал:
"Дефицит запасов", которая считается некорректно
сдвиг на один месяц назад решается довольно просто (DATEADD, например). В итоге мера работает в таком виде, проверяйте:
Код
Дифицит запасов:
=var stock_prev_month = CALCULATE([Запас на конец месяца];DATEADD('Calendar'[Дата];-1;MONTH))
var rezult = stock_prev_month - [План продаж]
return
IF(rezult>0;BLANK();rezult)
 
Как проверять ошибки, если вдруг не знаете
 
Vladimir Ch, спасибо за помощь, но как результат "Дефицит запасов" стал считаться по накопительной (это было реализовано мерой "Запас на конец месяца"). Т.е. дефицит каждого прошлого месяца прибавляется к дефициту текущему. Моя задача в том, чтобы показать дефицит товаров именно на каждый месяц, без привязки к предыдущему. Какой мерой можно реализовать данный вопрос?

Также интересный момент, что проверка мер показала что ошибок нет, прикладываю скрин. Но в любом случае спасибо!)
 
Vladimir Ch, поправлю себя. Вы правы в расчетах. Но в моем примере "Запас на конец месяца" считается по накопительной. Возможно если изменить данную меру и затем результат подставить в вашу меру, расчет даст корректный результат. Но как сделать сделать меру без накопительного итога я не знаю.

С Уважением,
 
По задаче получается, мне нужно сначала избавиться от профицита запасов (Это когда запас на конец месяца с учетом плана продаж остается положительный), затем выйти на 0, т.е. на идеальную оборачиваемость, когда новые товары заказываются под реальные сделки и поддерживать эту величину, заказывая фактически штучное кол-во запасов равное плану продаж. Чтобы Запас на конец месяца всегда оставался равен 0.

С Уважением,  
 
Честно, не получается до конца въехать в логику вашего расчета. Вы под сводной таблицей обычными формулами посчитайте, как должен получиться результат. Тогда наглядно будет видно, что откуда брать
 
Vladimir Ch, я сделал простую формулу в эксель. Файл во вложении. Строка "Дефицит товаров (ожидание)".

С Уважением,
 
Виталий Бермес, если Вы сделали правки и написали меры как я написал в сообщении #8, то, оставляя меру в том же виде, как я написал:
Код
Дифицит запасов:
=var stock_prev_month = CALCULATE([Запас на конец месяца];DATEADD('Calendar'[Дата];-1;MONTH))
var rezult = stock_prev_month - [План продаж]
return
IF(rezult>0;BLANK();rezult)

тогда финальная результирующая мера будет выглядеть так:
Код
=var previous = CALCULATE([Дифицит запасов];DATEADD('Calendar'[Дата];-1;MONTH))
return
IF(previous<0;0-[План продаж];[Дифицит запасов])
 
Vladimir Ch, спасибо большое! Все работает!

С Уважением,
Виталий
Страницы: 1
Наверх