Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
применяется:
вычисляемый столбец
вычисляемой таблицы
измерение
визуального вычисления
Вычисляет выражение в измененном контексте фильтра.
Заметка
Есть также функция CALCULATETABLE. Он выполняет точно те же функции, за исключением того, что изменяет контекст фильтра , примененный к выражению, возвращающим объект таблицы .
Синтаксис
CALCULATE(<expression>[, <filter1> [, <filter2> [, …]]])
Параметры
| Срок | Определение |
|---|---|
expression |
Выражение для вычисления. |
filter1, filter2,… |
(Необязательно) Логические выражения или табличные выражения, определяющие фильтры или функции модификатора фильтров. |
Выражение, используемое в качестве первого параметра, работает как мера.
Фильтры могут быть следующими:
- Логические выражения фильтра
- Выражения фильтра таблиц
- Функции изменения фильтра
При использовании нескольких фильтров их можно оценить с помощью AND логического оператора (&&), что означает, что все условия должны быть TRUE, или OR логическим оператором (||), что означает, что любое условие может быть истинным. Дополнительные сведения см. в разделе DAX операторов > логических операторов.
Логические выражения фильтра
Логический фильтр выражений — это выражение, которое оценивается как TRUE или FALSE. Он должен соответствовать нескольким правилам:
Он может ссылаться на столбцы из одной таблицы.
Не удается ссылаться на меры.
Она не может использовать вложенную CALCULATE функцию.
Он не может использовать функции, которые сканируют или возвращают таблицу, если они не передаются в качестве аргументов в агрегатные функции.
Она может содержать функцию агрегирования, которая возвращает скалярное значение. Рассмотрим пример.
Total sales on the last selected date = CALCULATE ( SUM ( Sales[Sales Amount] ), 'Sales'[OrderDateKey] = MAX ( 'Sales'[OrderDateKey] ) )
Выражение фильтра таблицы
Фильтр выражений таблицы применяет объект таблицы в качестве фильтра. Это может быть ссылка на таблицу моделей, но, скорее всего, это функция, которая возвращает объект таблицы. Функцию FILTER можно использовать для применения сложных условий фильтрации, включая те, которые нельзя определить логическим выражением фильтра.
Функции модификатора фильтра
Функции модификатора фильтров позволяют выполнять больше, чем просто добавлять фильтры. Они дают дополнительный контроль при изменении контекста фильтра.
| Функция | Цель |
|---|---|
| REMOVEFILTERS | Удалите все фильтры или фильтры из одной или нескольких столбцов таблицы или из всех столбцов одной таблицы. |
| ALL 1, ALLEXCEPTALLNOBLANKROW | Удалите фильтры из одного или нескольких столбцов или из всех столбцов одной таблицы. |
| KEEPFILTERS | Добавьте фильтр без удаления существующих фильтров в одних и том же столбцах. |
| USERELATIONSHIP | Включение неактивной связи между связанными столбцами, в этом случае активная связь автоматически становится неактивной. |
| CROSSFILTER | Измените направление фильтра (от одного до одного или из одного в оба) или отключите связь. |
1 Функция ALL и его варианты ведут себя как модификаторы фильтров, так и как функции, возвращающие объекты таблицы. Если средство поддерживает функцию REMOVEFILTERS , используйте ее для удаления фильтров.
Возвращаемое значение
Значение, которое приводит к выражению.
Замечания
При предоставлении выражений CALCULATE фильтра функция изменяет контекст фильтра для оценки выражения. Для каждого выражения фильтра существуют два стандартных результата, если выражение фильтра не упаковано в KEEPFILTERS функцию:
- Если столбцы или таблицы не находятся в контексте фильтра, новые фильтры добавляются в контекст фильтра для оценки выражения.
- Если столбцы или таблицы уже находятся в контексте фильтра, существующие фильтры перезаписываются новыми фильтрами для оценки CALCULATE выражения.
CALCULATE Использование функции без фильтров достигает определенного требования. Он преобразует контекст строки в фильтр контекст. Этот переход требуется, если выражение (а не мера модели), которое суммирует данные модели, необходимо оценить в контексте строки. Этот сценарий может произойти в формуле вычисляемого столбца или при вычислении выражения в функции итератора. При использовании меры модели в контексте строки переход контекста выполняется автоматически.
-
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Примеры
Примеры в этой статье можно использовать с примером модели Adventure Works DW 2020 Power BI Desktop. Сведения о получении модели см. в разделе DAXпримера модели.
Следующее определение меры продаж таблицы дает результат дохода, но только для продуктов с цветом синего цвета.
Blue Revenue =
CALCULATE ( SUM ( Sales[Sales Amount] ), 'Product'[Color] = "Blue" )
| Категория | Сумма продаж | Синий доход |
|---|---|---|
| Принадлежности | $1,272,057,89 | $165,406,62 |
| Велосипеды | $94,620,526.21 | $8,374,313,88 |
| Одежда | $2,117,613,45 | $259,488,37 |
| Компоненты | $11,799,076,66 | $803,642.10 |
| всего | $ 109,809,274.20 | $ 9602,850,97 |
Функция
Следующее определение меры продаж таблицы создает соотношение продаж по продажам для всех каналов продаж.
Revenue % Total Channel =
DIVIDE (
SUM ( Sales[Sales Amount] ),
CALCULATE (
SUM ( Sales[Sales Amount] ),
REMOVEFILTERS ( 'Sales Order'[Channel] )
)
)
| Канал | Сумма продаж | Общий канал % выручки |
|---|---|---|
| Интернет | $29,358,677,22 | 26.74% |
| Перекупщик | $80,450,596,98 | 73.26% |
| всего | $ 109,809,274.20 | 100.00% |
Функция
Следующая Customer таблица вычисляемого столбца классифицирует клиентов в класс лояльности. Это очень простой сценарий: когда доход, полученный клиентом, меньше $ 2500, они классифицируются как Низкий; в противном случае они High.
Customer Segment =
IF (
CALCULATE (
SUM ( Sales[Sales Amount] ),
ALLEXCEPT ( Customer, Customer[CustomerKey] )
) < 2500,
"Low",
"High"
)
| Сегмент клиента | Число клиентов | Сумма продаж |
|---|---|---|
| Высоко | 4,637 | $102,670,663.09 |
| Низко | 13,848 | $7,138,611.11 |
| всего | 18,485 | $ 109,809,274.20 |
В этом примере контекст строки преобразуется в контекст фильтра. Он называется переходом контекста. Функция