Страницы: 1
RSS
DAX. Как рассчитать общий прогноз продаж для каждого магазина на все пройденные дни, если данные поступают не синхронно?, Расчет значения прогноза продаж по всем пройдённым дням, даже если за тот день не было данных либо продаж.
 

Здравствуйте. Задача в PowerBI посчитать общий прогноз продаж по сети магазинов, но магазины(Custumers)

предоставляют данные не всегда/не каждый день.

Нужное значение – это ячейки, выделенные в файле Excel желтым.

В тестовой PBIX модели (в ссылке) сделал таблицу 1 ForecastMTD, для расчета накопительной сумы продажи с начала месяца на каждую дату для каждого магазина (мера MTD_$"), поделил эту меру на коэффициент пройденный дней по каждому магазину, получил прогноз продаж на каждый день по каждому магазину, просуммировав прогнозы получил необходимый прогноз по сети магазинов на каждый день.
Основную проблему которую я пытался решить это расчет значения для магазина даже если за тот день данных не было, и вывел суму прогнозов по каждому магазину. В результате перестали работать срезы, и для этого создал дополнительные справочники (CatalogCust, CatalogDate).

https://drive.google.com/file/d/1amVnc933hzTkfh0kTjSm6ta8cF1BXJ71/view?usp=sharing

   

Уважаемые специалисты PowerBI, подскажите пожалуйста можно ли решить задачу ? Либо сформулировать проблему более корректно.

Благодарен за Ваше внимание.

P.S Роботаю з PowerBI недавно, до этого был только Excel.

Изменено: Dima Gr - 09.12.2020 11:04:40
 
так нужно?
Вот горшок пустой, он предмет простой...
 
PooHkrd спасибо за быстрый ответ.
Да, так нужно в PowerBI
Код
=var maxd=CALCULATE( MAX('Таблица1'[Date]), ALL('Справочник магазинов'[Cust_Id]) ) return 
SUMX( 
   FILTER(
      ADDCOLUMNS(
         CROSSJOIN( VALUES('Справочник магазинов'[Cust_Id]), VALUES('Календарь'[Date])),
         "t",
         CALCULATE( 30 * DIVIDE( SUM( [Sum1] ), DISTINCTCOUNT( [Date] ) ), FILTER( ALL( &#39;Календарь&#39;[Date] ), &#39;Календарь&#39;[Date] <= maxd ) ) ),
      NOT( ISBLANK( [t] ) ) ),
   [t] )

Это и есть та мера? Ее можно использовать в PowerBI?
 
Dima Gr, не вставляйте скопированное - прикрепляйте рисунок файлом. Посмотрите, что получается при вставке.
 
Цитата
Dima Gr написал:
Ее можно использовать в PowerBI?
Можно, только мера это не все, посмотрите на структуру модели и связи со справочниками. Мера будет работать только если вы построите такую же структуру в своей модели в PBI, ну и это, в итогах по строке и в Total она выдает сумбур, если нужно чтобы итоги отображались, то сначала определитесь по каким правилам.
Изменено: PooHkrd - 09.12.2020 12:30:43
Вот горшок пустой, он предмет простой...
 
Цитата
Юрий М написал:
Dima Gr , не вставляйте скопированное - прикрепляйте рисунок файлом. Посмотрите, что получается при вставке.

Извените.
Исправил.
Изменено: Dima Gr - 09.12.2020 14:11:40
 
Dima Gr, отвечая на ваше сообщение в личку, для вашей задачи в PBI можно использовать функцию SUMMARIZECOLUMNS. Тогда запись меры будет несколько короче, и, наверное, проще к восприятию. Если хотите добиться чего-то в PBI, настоятельно рекомендую приобрести вот этот труд. Авторы - хозяева сайта, ссылку на статью которых я привел выше.
Вот горшок пустой, он предмет простой...
 
PooHkrd,
на основе Вашего решения, доработал меру, так чтобы считала прогноз по разным месяцам:
Код
=var maxd=CALCULATE( MAX('Calendar'[Date]), ALL('Cust'[Cust_Id]) )
var monthStart = CALCULATE((STARTOFMONTH('Table1'[Date])),ALL('Cust'[Cust_Id]) )
var monthEnd = CALCULATE((ENDOFMONTH('Calendar'[Date])),ALL('Cust'[Cust_Id]) )
var countdays = CALCULATE(monthEnd-monthStart)*1+1
return IF(ISBLANK('Table1'[1 Max_Date]),BLANK(),

SUMX(
   FILTER(
       ADDCOLUMNS(
           CROSSJOIN( VALUES('Cust'[Cust_Id]), VALUES('Calendar'[Date])),
           "t",
           CALCULATE(countdays * (DIVIDE( SUM( [Sum1] ), DISTINCTCOUNT( [Date] ) )), FILTER( ALL('Calendar'[Date] ),
           'Calendar'[Date] <= maxd && 'Calendar'[Date] >= monthStart ) ) ),
       NOT( ISBLANK( [t] ) ) ),
   [t] )
)

дальше попробую SUMMARIZECOLUMNS.
Страницы: 1
Читают тему
Наверх