Сравнение периодов
В данном примере используется модель данных, описанная на странице Поддерживаемые функции DAX.
Платформа позволяет вычислять показатели со смещением на N дней, недель, месяцев, кварталов или лет. Это позволяет сравнивать показатели за любые интересующие периоды с любым необходимым смещением.
В нашем примере мы рассмотрим сравнение данных за текущий период с аналогичным периодом прошлого года, а также вычислим динамику продаж в процентах. Для этого мы сделаем следующее:
Вычислим продажи за прошлый год с помощью функции
DATEADD:Продажи за прошлый год = CALCULATE ( SUM ( factonlinesales[salesamount] ), FILTER ( ALL ( dimdate ), AND ( 'dimdate'[datekey] >= MINX ( dimdate, DATEADD ( 'dimdate'[datekey], -1, YEAR ) ), 'dimdate'[datekey] <= MAXX ( 'dimdate', DATEADD ( 'dimdate'[datekey], -1, YEAR ) ) ) ) )где
MINX ( dimdate, DATEADD ( 'dimdate'datekey, -1, YEAR ) )вычисляет минимальную дату, сдвинутую на один год назад;MAXX ( dimdate, DATEADD ( 'dimdate'datekey, -1, YEAR ) )вычисляет максимальную дату, сдвинутую на один год назад;функция
CALCULATEсуммирует значенияsalesamountиз таблицыfactonlinesales, но только для тех строк, которые соответствуют датам, отфильтрованным на предыдущий год.
Таким образом, формула вычисляет сумму продаж за прошлый год, используя текущий контекст дат и сдвигая его на один год назад.
Вы также можете произвести эти вычисления с помощью функции SAMEPERIODLASTYEAR, которая является более удобным способом выполнения операций, которые можно реализовать с помощью DATEADD:Продажи за прошлый год = CALCULATE ( SUM ( factonlinesales[salesamount] ), FILTER ( ALL ( dimdate ), AND ( 'dimdate'[datekey] >= MINX ( dimdate, SAMEPERIODLASTYEAR ('dimdate'[datekey] ), 'dimdate'[datekey] <= MAXX ( 'dimdate', SAMEPERIODLASTYEAR ('dimdate'[datekey] ) ) ) )
Для сравнения:
В Power BI аналогичные вычисления можно произвести следующим образом:
Продажи за прошлый год =
CALCULATE (
SUM ( factonlinesales[salesamount] ),
DATEADD ( 'MyDate'[Date], -1, YEAR )
)Вычислим динамику продаж с использованием вложенных мер:
Динамика в процентах = DIVIDE ( factonlinesales[Продажи за прошлый год], SUM ( factonlinesales[salesamount] ) ) * 100где сумма продаж за прошлый год делится на общую сумму продаж за текущий период и полученный результат умножается на 100.
Таким образом, формула позволяет понять разницу в процентах между продажами текущего и прошлого годов.
Теперь мы можем визуализировать наши расчеты:
Аналогичным образом вы можете сравнивать любой период. Например, если вы хотите вычислить объем продаж за прошлую неделю, вы можете воспользоваться следующей формулой:
Продажи за прошлую неделю = CALCULATE (
SUM ( 'Факты'[salesamount] ),
FILTER (
ALL ( 'Календарь' ),
AND (
'Календарь'[datekey] >= MINX ( 'Календарь', DATEADD ( 'Календарь'[datekey], -7, day ) ),
'Календарь'[datekey]
<= MAXX ( 'Календарь', DATEADD ( 'Календарь'[datekey], -7, day ) )
)
)
)где
SUM ( 'Факты'[salesamount] )– вычисляет сумму значений столбца'Факты'[salesamount].FILTER ( ALL ( 'Календарь' ), ... )– функцияFILTERиспользуется для создания фильтра, который применяется к таблице'Календарь'. ФункцияALLсбрасывает существующие фильтры, чтобы рассмотреть весь диапазон дат в таблице'Календарь'.DATEADD ( 'Календарь'[datekey], -7, day )– сдвигает каждую дату на 7 дней назад.MINX и MAXX– вычисляют минимальное и максимальное значение выражения в данной таблице. Здесь они используются для определения диапазона дат (от минимальной до максимальной), сдвинутого на 7 дней назад.AND ( ... )– логическая операция, которая проверяет, что каждая дата в таблице'Календарь'находится внутри диапазона дат, сдвинутого на 7 дней назад.
Смотрите также
Моделирование данных с помощью DAX
Поддерживаемые функции DAX
Математические операторы
Нужна дополнительная помощь?