Страницы: 1
RSS
PowerBI / коэффициент сезонности и его медиана, расчет коэффициента сезонности и его медианы за N-лет по месяцам
 
Здравствуйте!

Прошу мне помочь в вопросе расчета индекса сезонности и его медианы.

Я пыталась решить задачу таки образом

1) Считаю средние продажи за каждый год, только по закрытым месяцам
Код
AVG_for_YEAR = 
var _sales = CALCULATE(
                '#measures'[Sales Amount], 'Date'[ClosePeriodMonth] = TRUE(),
                FILTER(ALLSELECTED('Date'),'Date'[Year]=MAX('Date'[Year] )))

var _months = CALCULATE(
                DISTINCTCOUNT('Date'[Month]),'Date'[ClosePeriodMonth] = TRUE(),
                FILTER(ALLSELECTED('Date'),'Date'[Year]=MAX('Date'[Year] )))

RETURN DIVIDE(_sales, _months)

Математические ожидания верные

2) Индекс сезонности = продажи за месяц/средние за год
Код
Season Index = 
CALCULATE (
    DIVIDE('#measures'[Sales Amount], '#measures'[AVG_for_YEAR], BLANK()), 
        'Date'[ClosePeriodMonth] = TRUE())

Математические ожидания верные

3) Медиана индекса сезонности за N-лет
Код
Median = 
CALCULATE( 
    MEDIANX(VALUES('Date'[Year Month]), '#measures'[Season Index]),
    DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -4,YEAR)
)

А вот тут мне медиана показывает неверные результаты.

И я не знаю где ошибка.
Прикрепляю pbix для исследования, там же картинки с расчетами в excel


pbix
 
pani_v, добрый день.
Цитата
написал:
И я не знаю где ошибка.
Ошибка в том, что Вы в мере Median  аргументом DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -4,YEAR) убиваете фильтр по месяцу в матрице, и получаете таблицу VALUES('Date'[Year Month]) за 4 года до MAX('Date'[Date]).
Может так попробовать:
Код
AVG_for_YEAR = 
var _max_date = MAX('Date'[Date])
var _datesInPer = DATESBETWEEN('Date'[Date];DATE(YEAR(_max_date);1;1);DATE(YEAR(_max_date);12;31)) 
var _sales = CALCULATE(
                '#measures'[Sales Amount]; 'Date'[ClosePeriodMonth] = TRUE();
               _datesInPer)

var _months = CALCULATE(
                DISTINCTCOUNT('Date'[Year Month]);'Date'[ClosePeriodMonth] = TRUE();
                _datesInPer)

RETURN DIVIDE(_sales; _months; 0)

И тогда мера Медиана:
Код
Median = 
var tab = ADDCOLUMNS(VALUES('Date'[Year Month]); "@Val"; '#measures'[Season Index])
var res = MEDIANX(FILTER(tab; [@Val] <> BLANK());[@Val])
return res

 
Цитата
написал:
И тогда мера Медиана:
Святой Вы человек! Спасибо Вам огромное!!

Вроде получилось, если оставить месяца.

А как сделать так, чтобы верные значения этой медианы показывались в таблице с периодом мес-год?
А то в таком развороте она повторяет коэф сезонности
 
Код
Median = 
var _max_date = MAX('Date'[Date])
var _min_date = CALCULATE(MIN('Date'[Date]);ALL('Date'))
var _month = MONTH(_max_date)
var _datesInPer =  DATESBETWEEN('Date'[Date]; _min_date;_max_date)
var tab = CALCULATETABLE( ADDCOLUMNS(VALUES('Date'[Year Month]); "@Val"; '#measures'[Season Index]);_datesInPer; MONTH('Date'[Date]) = _month)
var res = MEDIANX(FILTER(tab; [@Val] <> BLANK());[@Val])
return res

 
Alex, моя вам бесконечная благодарность за помощь!!!  
Страницы: 1
Наверх