CALCULATETABLE
Область применения: вычисление вычисляемого столбца вычисляемой таблицы Меры визуального элемента
Вычисляет табличное выражение в измененном контексте фильтра.
Примечание.
Существует также функция CALCULATE . Он выполняет точно те же функции, за исключением того, что он изменяет контекст фильтра, применяемый к выражению, которое возвращает скалярное значение.
Синтаксис
CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])
Параметры
Термин | Определение |
---|---|
выражение | Вычисляемая таблица. |
filter1, filter2,... | (Необязательно) Логические выражения или табличные выражения, определяющие фильтры или функции модификатора фильтров. |
Выражение, используемое в качестве первого параметра, должно быть таблицей моделей или функцией, возвращающей таблицу.
Фильтры могут быть следующими:
- Логические выражения фильтра
- Выражения фильтра таблиц
- Функции изменения фильтра
При наличии нескольких фильтров они оцениваются с помощью логического оператора AND. Это означает, что все условия должны быть true одновременно.
Логические выражения фильтра
Фильтр логического выражения — это выражение, результатом которого является значение TRUE или FALSE. Существует несколько правил, которые они должны соблюдать:
- Они могут ссылаться только на один столбец.
- Они не могут ссылаться на меры.
- Они не могут использовать вложенную функцию CALCULATE.
Начиная с выпуска Power BI Desktop за сентябрь 2021 г. также применяются следующие компоненты:
- Они не могут использовать функции, которые сканируют или возвращают таблицу, если они не передаются в качестве аргументов в агрегатные функции.
- Они могут содержать функцию агрегирования, которая возвращает скалярное значение.
Выражение фильтра таблицы
Фильтр табличных выражений применяет объект таблицы в качестве фильтра. Это может быть ссылка на таблицу моделей, но, скорее всего, это функция, которая возвращает объект таблицы. Функцию FILTER можно использовать для применения сложных условий фильтра, включая те, которые не могут быть определены логическим выражением фильтра.
Функции модификатора фильтра
Функции модификатора фильтров позволяют выполнять больше, чем просто добавлять фильтры. Они предоставляют дополнительный контроль при изменении контекста фильтра.
Function | Характер использования |
---|---|
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 |