Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Платформа позволяет вычислять показатели со смещением на N дней, недель, месяцев, кварталов или лет. Это позволяет сравнивать показатели за любые интересующие периоды с любым необходимым смещением.
В нашем примере мы рассмотрим сравнение данных с гранулярностью год и смещением назад на один год, а также вычислим динамику продаж в процентах. Для этого мы сделаем следующее:
Создадим меру, которая вычисляет объем продаж:
Продажи = SUM(factonlinesales[salesamount])
Вычислим продажи за прошлый год с помощью функции
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
, но только для тех строк, которые соответствуют датам, отфильтрованным на предыдущий год.
Таким образом, формула вычисляет сумму продаж за прошлый год, используя текущий контекст дат и сдвигая его на один год назад.
Информация | ||
---|---|---|
Для сравнения:
|
Вычислим динамику продаж с использованием вложенных мер:
Блок кода Динамика в процентах = 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
📄 Математические операторы
Нужна дополнительная помощь?