Calculation Group
July 8, 2021

Использование #CalculationGroup (#CG) в визуальном элементе Матрица

Продолжаем серию статей про #CG. На этот раз задача состоит в следующем:

Вывести в матрице значения за выбранный год с разбивкой по месяцам и иметь возможность переключить абсолютное значение на относительное предыдущего года. При этом, когда выбрано абсолютное значение, то в заголовке столбца должен быть указан номер года, а когда выбрано относительное значение, то какой год с каким сравнивается. Пример: в срезе выбран 2021 год, соответственно название столбца должно быть "2020 vs 2021".

Итак, у нас есть таблица фактов продаж за 3 года, состоящая из двух столбцов [Date] и [qty]:

Таблица facts

С помощью функции CALENDARAUTO() создадим справочник calendar и добавим в него столбцы:[Year], [Month], [Month number]:

Создаем таблицу calendar

Также нам понадобится вспомогательная таблица, с помощью которой у нас будут меняться названия столбцов. Данную таблицу мы создаем с помощью функций DAX на основе таблицы calendar, чтобы при обновлении модели набор заголовков менялся автоматически. Т.к. название заголовка у нас будет зависеть от выбранного года, то нам нужен будет столбец [Year] с номером года, столбец [Заголовок], который мы собственно и будем выводить, и столбец [#CG], в котором у нас будет индекс соответствующего items из #CalculationGroup:

Создаем таблицу ГодыVS

Далее нам необходимо будет создать всего одну меру [Количество] = SUM(facts[qty]). После чего переходим к созданию #ГруппВычислений. На вкладке "Внешние инструменты" открываем TabularEditor, если вы его ещё не установили, то можно скачать по ссылке

Создаем #CalculationGroup с названием !CGTesting:

Создаем Calculation group

Создаем два #CalculationItems:

Создаем Calculation items

В Expression Editor задаём вычисление для [Количество]:

Текст функции для Calculation items [Количество]

В Expression Editor задаём вычисление для [Год к году]:

Текст функции для Calculation items [Количество]

В разделе свойств #CalculationItems не забываем задать параметр Format String Expression, чтобы числа отображались как целые числа с разделителями разрядов ("#,#"), а проценты были процентами ("0%").

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

Дополнение от 20.07.2021: Также необходимо задать порядок #CalculationItems изменив в свойствах значение в поле Ordinal на 0 и 1 в соответствии с таблицей ГодыVS.

Визуализация

Добавляем на лист визуальный элемент Срез, добавляем в него столбец calendar[Year], настраиваем внешний вид как список и переключатель "Единичный выбор"

Добавляем срез по годам

Добавляем на лист визуальный элемент Срез, добавляем в него столбец !CGTesting[Name], настраиваем внешний вид как список и переключатель "Единичный выбор"

Добавляем срез для переключения вычислений

И финальный штрих - добавляем на лист визуальный элемент Матрица: в Строки - calendar[Month], в Столбцы - ГодыVS[Заголовок], в Значения - меру [Количество]

Добавляем матрицу

Всё, теперь у нас есть матрица, в которой у нас меняется не только расчёт(мера), но и её название. При этом это название динамически будет изменяться при обновлении модели.

Данные по 2020 году в сравнении с 2019
Фактические данные за 2021 год