Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

Платформа позволяет вычислять показатели со смещением на N дней, недель, месяцев, кварталов или лет. Это позволяет сравнивать показатели за любые интересующие периоды с любым необходимым смещением.

В нашем примере мы рассмотрим сравнение данных с гранулярностью год и смещением назад на один год, а также вычислим динамику продаж в процентах. Для этого мы сделаем следующее:

  1. Создадим меру, которая вычисляет объем продаж:
    Продажи = SUM(factonlinesales[salesamount])

  2. Вычислим продажи за прошлый год с помощью функции 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, но только для тех строк, которые соответствуют датам, отфильтрованным на предыдущий год.
      Таким образом, формула вычисляет сумму продаж за прошлый год, используя текущий контекст дат и сдвигая его на один год назад.

Информация

Для сравнения:
В Power BI аналогичные вычисления можно произвести следующим образом:

Блок кода
Продажи за прошлый год =
CALCULATE (
    SUM ( factonlinesales[salesamount] ),
    DATEADD ( 'MyDate'[Date], -1, YEAR )
)
  1. Вычислим  динамику продаж с использованием вложенных мер:

    Блок кода
    Динамика в процентах =
    DIVIDE (
        factonlinesales[Продажи за прошлый год],
        SUM ( factonlinesales[salesamount] )
    ) * 100

    где сумма продаж за прошлый год делится на общую сумму продаж за текущий период и полученный результат умножается на 100.
    Таким образом, формула позволяет понять разницу в процентах между продажами текущего и прошлого годов.

Теперь мы можем визуализировать наши расчеты:

DATEADD.png

Аналогичным образом вы можете сравнивать любой период. Например, если вы хотите вычислить объем продаж за прошлую неделю, вы можете воспользоваться следующей формулой:

Блок кода
Продажи за прошлую неделю = 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 дней назад.

week.png

Смотрите также

📄 Моделирование данных с помощью DAX
📄 Поддерживаемые функции DAX
📄 Математические операторы

Нужна дополнительная помощь?

Свяжитесь с технической поддержкой.