Переход на следующий шаг с помощью мер запаса в DAX

Переход на следующий уровень с помощью резервных мер в DAX

Мы можем столкнуться с некоторыми странными эффектами при использовании запасных измерений в Power BI. Давайте посмотрим, как может возникнуть такая ситуация и как её решить.

Фото от Firmbee.com на Unsplash

Введение

Расчеты запасов обычно используются, когда данные нельзя агрегировать по времени.

Например, суммирование баланса моего банковского счета по времени было бы плохой идеей. Это было бы хорошей идеей для меня, но не для моего банка.

В настоящее время я работаю над проектом клиента по созданию отчетного решения для данных по кадровому составу.

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

Кажется, что это простая задача.

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

Теперь давайте погрузимся в это.

Базовый запасной показатель

Во-первых, правильное название для запасного показателя – полуприводимые показатели. Это потому, что, как уже упоминалось выше, они не агрегируют данные по времени, а по всем остальным измерениям.

Базовый полуприводимый показатель для расчета численности персонала простой:

Численность персонала = VAR LastDataDay = LASTNONBLANK('Дата'[Дата]                              ,[Численность персонала (Базовый)])RETURN CALCULATE([Численность персонала (Базовый)]          ,LastDataDay          )

Показатель [Численность персонала (Базовый)] содержит простую агрегацию (СУММА) для получения необходимого результата.

Я всегда работаю с базовыми показателями, чтобы иметь возможность включать дополнительную логику, которую можно повторно использовать в последующих показателях. Один из примеров – использование коэффициента масштабирования, когда пользователь хочет видеть тысячи или миллионы без необходимости автоматического масштабирования в Power BI, которое добавляет странные масштабные коэффициенты, такие как Т для тысяч или М для миллионов.

Затем, я использую функцию LASTNONBLANK() для получения последней даты с результатом из показателя численности персонала (Базовый). Результат этой функции затем применяется в вызове CALCULATE() для получения окончательного результата.