DAX: вычисляемые столбцы и контекст строки VS Меры в Power BI

DAX: вычисляемые столбцы и контекст строки VS Меры в Power BI

Первое, что нужно изучить в DAX — разница между вычисляемыми столбцами и мерами. В этой статье мы кратко описали эти 2 разных способа расчета значений и когда лучше использовать каждый из них.

Вычисляемые столбцы в Power BI

При создании модели данных в Power Pivot для Excel, Analysis Services Tabular или Power BI Desktop, вы можете расширить вашу таблицу, создав новые столбцы.

Для начала выберите таблицу и нажмите на кнопку "Создать столбец":

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

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

Значения в вычисляемых столбцах оцениваются при первом их определении и при обновлении набора данных. После оценки значения сохраняются в вашей модели данных. Это означает увеличение размера вашей модели данных и потребление большего объема оперативной памяти. Чем больше у вас вычисляемых столбцов, тем больше будет ваша модель. Это может показаться странным, если вы привыкли к столбцам, вычисляемым SQL или Excel, а не сохраняемым, которые вычисляются во время запроса и не используют память.

Анонсы всех видео, статей и полезностей - в нашем Telegram🔥
Присоединяйтесь, обсуждайте и автоматизируйте!

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

Когда вы пишете вычисляемый столбец, вам нужно полагаться только на контекст строки. Контекст строки — это просто понятие текущей строки таблицы. Он указывает, для какой строки мы вычисляем значения, чтобы DAX мог просматривать другие значения в той же строке. В вычисляемом столбце подразумевается контекст строки. Когда вы записываете выражение в вычисляемый столбец, выражение оценивается для каждой строки таблицы. Вычисляемый столбец "видит" только текущую строку.

Меры в Power BI

Существует еще один способ определения вычислений в модели DAX. С его помощью вы можете агрегировать значения из многих строк в таблице. Эти расчеты являются мерами и имеют иконку в виде калькулятора. 

Имя "меры" используется в пользовательском интерфейсе, за исключением Excel 2013, в котором используется термин «вычисляемое поле» вместо «меры». Excel 2016 вернулся к термину «меры», используемому в DAX и первоначально использовавшемуся также в Power Pivot для Excel 2010.

Меры неявно не имеют контекста строки. Это связано с тем, что по умолчанию они работают на агрегированном уровне. Таким образом, вы не можете просто ссылаться на столбцы в показателе DAX. Вы получите сообщение об ошибке, поскольку не существует контекста строки.

Ошибка связана с тем, что мера не будет знать, какую строку выбрать в столбце. Чтобы сослаться на столбец в показателе, вы должны поместить столбец в функцию агрегирования. Поскольку мы агрегируем значения, не имеет значения, какую строку мы используем, нам не нужен контекст строки, поскольку мы просто агрегируем все значения в одном столбце, чтобы вернуть одно значение. В качестве альтернативы мы можем создать контекст строки в показателе с помощью функции итератора.

Каковы основные моменты мер DAX?

  • Рассчитывается с использованием всех фильтров: Контекстная фильтрация.
  • Не сохраняется и не рассчитывается заранее.
  • Когда вы помещаете его на страницу отчета и изменяете срез, фильтр или касаетесь гистограммы или любого другого визуального элемента, чтобы выделить его, и это влияет на значение этого показателя, оно вычисляется на ходу.
  • Расчет использует ЦП.

Разница вычисляемого столбца и меры в Power BI

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

Параметр сравненияМераВычисляемый столбец
ХранениеРезультат вычисления не хранится в памяти модели, а вычисляется "на лету", в зависимости от контекстов.Результат вычисления хранится в метаданных модели и пересчитывается только при обновлении источника данных.
Использование ресурсовПроцессор (CPU).Оперативная память.
Способ вычисленияТолько с использованием агрегирующих функций при обращении к столбцу.Построчно для каждой строки таблицы хранения.
Визуализация результатаМожно увидеть только при добавлении в визуальный элемент на странице отчета.Можно увидеть сразу в таблице хранения на вкладке "Данные"

Заключение

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

Чтобы выбрать между столбцом и мерой, нужно понимать суть нашего вычисления. Желательно создавать меры для коэффициентов и агрегаций (суммы, процента, итд), а также для выражений, которые реагируют на контекст указанного фильтра. Столбцы больше подходят для статических и строковых выражений, атрибутов и категорий.

Комментарии