CALCULATETABLE
применяется:вычисляемый столбец
вычисляемой таблицы
измерение
визуального вычисления
Вычисляет табличное выражение в измененном контексте фильтра.
Заметка
Есть также функция CALCULATE. Он выполняет точно те же функции, за исключением того, что изменяет контекст фильтра
Синтаксис
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Параметры
Срок | Определение |
---|---|
expression |
Вычисляемая таблица. |
filter1, filter2,… |
(Необязательно) Логические выражения или табличные выражения, определяющие фильтры или функции модификатора фильтров. |
Выражение, используемое в качестве первого параметра, должно быть таблицей моделей или функцией, возвращающей таблицу.
Фильтры могут быть следующими:
- Логические выражения фильтра
- Выражения фильтра таблиц
- Функции изменения фильтра
При наличии нескольких фильтров они оцениваются с помощью ANDлогического оператора. Это означает, что все условия должны быть TRUE
одновременно.
Логические выражения фильтра
Логический фильтр выражений — это выражение, которое оценивается как TRUE
или FALSE
. Существует несколько правил, которые они должны соблюдать:
- Они могут ссылаться только на один столбец.
- Они не могут ссылаться на меры.
- Они не могут использовать вложенную функцию CALCULATE.
Начиная с выпуска Power BI Desktop за сентябрь 2021 г. также применяются следующие компоненты:
- Они не могут использовать функции, которые сканируют или возвращают таблицу, если они не передаются в качестве аргументов в агрегатные функции.
- Они могут содержать функцию агрегирования, возвращающую скалярное значение.
Выражение фильтра таблицы
Фильтр выражений таблицы применяет объект таблицы в качестве фильтра. Это может быть ссылка на таблицу моделей, но, скорее всего, это функция, которая возвращает объект таблицы. Функцию FILTER можно использовать для применения сложных условий фильтрации, включая те, которые не могут быть определены логическим выражением фильтра.
Функции модификатора фильтра
Функции модификатора фильтров позволяют выполнять больше, чем просто добавлять фильтры. Они предоставляют дополнительный контроль при изменении контекста фильтра.
Функция | Цель |
---|---|
REMOVEFILTERS | Удалите все фильтры или фильтры из одной или нескольких столбцов таблицы или из всех столбцов одной таблицы. |
ALL 1, ALLEXCEPT, ALLNOBLANKROW | Удалите фильтры из одного или нескольких столбцов или из всех столбцов одной таблицы. |
KEEPFILTERS | Добавьте фильтр без удаления существующих фильтров в одних и том же столбцах. |
USERELATIONSHIP | Включение неактивной связи между связанными столбцами, в этом случае активная связь автоматически станет неактивной. |
CROSSFILTER | Измените направление фильтра (от одного до одного или из одного в оба) или отключите связь. |
1 Функция ALL и его варианты ведут себя как модификаторы фильтров, так и как функции, возвращающие объекты таблицы. Если функция REMOVEFILTERS поддерживается средством, лучше использовать ее для удаления фильтров.
Возвращаемое значение
Таблица значений.
Замечания
При предоставлении выражений фильтра функция CALCULATETABLE изменяет контекст фильтра для оценки выражения. Для каждого выражения фильтра существует два возможных стандартных результата, если выражение фильтра не упаковано в функцию KEEPFILTERS:
- Если столбцы (или таблицы) не содержатся в контексте фильтра, новые фильтры будут добавлены в контекст фильтра для оценки выражения.
- Если столбцы (или таблицы) уже находятся в контексте фильтра, существующие фильтры будут перезаписаны новыми фильтрами для оценки выражения CALCULATETABLE.
Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).
Пример
В следующем примере функция CALCULATETABLE используется для получения суммы интернет-продаж за 2006 год. Это значение позже используется для вычисления соотношения интернет-продаж по сравнению со всеми продажами за 2006 год.
Следующая формула:
= SUMX(
CALCULATETABLE(
'InternetSales_USD',
'DateTime'[CalendarYear] = 2006
),
[SalesAmount_USD]
)
Это приводит к следующей таблице:
Метки строк | Интернет SalesAmount_USD | CalculateTable 2006 Internet Sales | Соотношение интернет-продаж до 2006 |
---|---|---|---|
2005 | $2,627,031,40 | $5,681,440,58 | 0.46 |
2006 | $5,681,440,58 | $5,681,440,58 | 1.00 |
2007 | $8,705,066,67 | $5,681,440,58 | 1.53 |
2008 | $9,041,288,80 | $5,681,440,58 | 1.59 |
Общий итог | $26,054,827,45 | $5,681,440,58 | 4.59 |
Связанное содержимое
- контекст фильтра
- функция CALCULATE (DAX)
- функции фильтрации (DAX)