Введение

Завершено

С помощью выражений анализа данных (DAX) можно добавить три типа вычислений в семантиковую модель:

  • вычисляемые таблицы;
  • вычисляемые столбцы;
  • меры.

Примечание

DAX также можно использовать для определения правил безопасности на уровне строк (RLS), которые представляют собой выражения, обеспечивающие применение фильтров к таблицам модели. Однако правила не считаются вычислениями модели, поэтому в данном модуле они не рассматриваются. Дополнительные сведения см. в статье Безопасность на уровне строк (RLS) в Power BI.

Вычисляемые таблицы

Чтобы добавить вычисляемую таблицу в модель, можно написать формулу DAX. Формула может дублировать или преобразовывать имеющиеся данные модели (или создать ряд данных) для формирования новой таблицы. Данные вычисляемой таблицы всегда импортируются в модель, что увеличивает размер хранилища модели и время обновления данных.

Примечание

Вычисляемая таблица не может подключаться к внешним данным. Для выполнения этой задачи необходимо использовать Power Query.

Вычисляемые таблицы могут быть полезны в различных сценариях, в том числе для:

  • таблиц дат;
  • ролевых измерений;
  • анализа "что если".

Таблицы дат

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

Ролевые измерения

Если две таблицы моделей имеют несколько связей, это может быть вызвано тем, что модель имеет ролевое измерение. Например, если имеется таблица с именем Sales с двумя столбцами дат, OrderDateKey и ShipDateKey, то оба столбца будут связаны со столбцом Date в таблице Date. В этом случае таблица Date называется ролевым измерением, поскольку может играть роль даты заказа или даты отправки.

На изображении показаны две таблицы: Sales и Date. Существует два типа связей между таблицами. Активна только одна связь.

Модели Microsoft Power BI позволяют использовать только одну активную связь между таблицами, которая обозначается на схеме модели сплошной линией. Активная связь используется по умолчанию для распространения фильтров, которые в этом случае передаются из таблицы Date в столбец OrderDateKey в таблице Sales. Все остальные связи между двумя таблицами неактивны. На схеме модели эти связи представлены в виде пунктирных линий. Неактивные связи используются только в том случае, если они явно запрошены в вычисляемой формуле с помощью функции DAX под названием USERELATIONSHIP.

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

На изображении показаны две таблицы: Sales и Date. Между таблицами Sales и Date и таблицами Sales и Ship Date установлено по одной связи. Обе связи активны.

Анализ "что если"

Power BI Desktop поддерживает функцию под названием параметры what-if (что если). При создании параметра what-if вычисляемая таблица автоматически добавляется в модель.

Параметры what-if позволяют пользователям отчетов выбирать значения, хранящиеся в вычисляемой таблице, или фильтровать по ним данные. Формулы мер могут целенаправленно использовать выбранные значения. Например, параметр what-if может обеспечить пользователю отчета возможность выбрать гипотетический валютный курс, а мера — поделить значения дохода (в местной валюте) на выбранный курс.

Примечательно, что вычисляемые таблицы what-if не связаны с другими таблицами модели, так как они не используются для распространения фильтров. По этой причине они иногда называются отключенными таблицами.

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

Чтобы добавить вычисляемый столбец в любую таблицу в модели, можно написать формулу DAX. Формула вычисляется для каждой строки таблицы и возвращает одно значение. При добавлении в таблицу импорта режима хранения формула вычисляется при обновлении семантической модели и увеличивает размер хранилища модели. При добавлении данных в таблицу с режимом хранения DirectQuery формула вычисляется основной базой данных-источником при запросе таблицы.

В области Поля вычисляемые столбцы дополнены специальным значком. В следующем примере показан один вычисляемый столбец Age в таблице Customer.

На изображении показан раздел области

Меры

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

В области Поля меры обозначаются значком калькулятора. В следующем примере показаны три меры в таблице Sales: Cost, Profit и Revenue.

На изображении показан раздел области

Иногда меры можно назвать явными. Если точнее, явные меры — это написанные на языке DAX вычисления модели, которые обычно называются просто мерами. Однако при этом существует также концепция неявных мер. Неявные меры — это столбцы, по которым можно создать сводные данные с помощью визуальных элементов, используя такие упрощенные способы, как количество, сумма, минимум, максимум и т. д. В области Поля неявные меры обозначаются символом "сигма" (∑).

Примечание

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

Кроме того, в табличном моделировании не существует такого понятия, как вычисляемый показатель (вычисляемая мера). Слово вычисляемый используется для описания вычисляемых таблиц и столбцов и позволяет отличить их от таблиц и столбцов, полученных из Power Query. В Power Query нет понятия явной меры.