CALCULATETABLE

Вычисляет табличное выражение в измененном контексте фильтра.

Примечание

Также имеется функция CALCULATE. Она имеет точно такую же функциональность, за исключением того, что изменяет контекст фильтра, примененный к выражению, возвращающему скалярное значение.

Синтаксис

CALCULATETABLE(<expression>[, <filter1> [, <filter2> [, …]]])

Параметры

Термин Определение
expression Вычисляемое табличное выражение.
filter1, filter2,… (Необязательно) Логические выражения или табличные выражения, определяющие фильтры или функции модификаторов фильтра.

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

Фильтры могут быть:

  • выражениями логического фильтра;
  • выражениями фильтра таблицы.
  • Функции изменения фильтра

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

Выражения логического фильтра

Фильтр логического выражения — это выражение, результатом которого является значение TRUE или FALSE. Существует несколько правил, которые они должны соблюдать:

  • Они могут ссылаться только на один столбец.
  • Они не могут ссылаться на меры.
  • Выражение не может использовать вложенную функцию CALCULATE.

Начиная с выпуска Power BI Desktop за сентябрь 2021 г. применяется также следующее:

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

Выражение фильтра таблицы

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

Функции модификатора фильтра

Функции модификатора фильтра позволяют не только добавлять фильтры. Они предоставляют дополнительный контроль при изменении контекста фильтра.

Функция Назначение
REMOVEFILTERS Удаление всех фильтров или фильтров из одного или нескольких столбцов таблицы или из всех столбцов одной таблицы.
ALL1, ALLEXCEPT, ALLNOBLANKROW Удаление фильтров из одного или нескольких столбцов или из всех столбцов одной таблицы.
KEEPFILTERS Добавление фильтра без удаления существующих фильтров для тех же столбцов.
USERELATIONSHIP Вызов неактивной связи между связанными столбцами. В этом случае активная связь автоматически становится неактивной.
CROSSFILTER Изменение направления фильтра (от обоих до одного и от одного до обоих) или отключение связи.

1 Функция ALL и ее варианты ведут себя как модификаторы фильтров и как функции, возвращающие объекты таблицы. Если функция REMOVEFILTERS поддерживается вашим средством, лучше использовать ее для удаления фильтров.

Возвращаемое значение

Таблица значений.

Remarks

  • При указании выражений фильтра функция CALCULATETABLE изменяет контекст фильтра для вычисления выражения. Для каждого критерия фильтра существует два возможных стандартных результата, если выражение фильтра не заключено в функцию KEEPFILTERS:

    • Если столбцы (или таблицы) не находятся в контексте фильтра, то новые фильтры будут добавлены в контекст фильтра для вычисления выражения.
    • Если столбцы (или таблицы) уже находятся в контексте фильтра, существующие фильтры будут перезаписаны новыми фильтрами для вычисления выражения CALCULATETABLE.
  • Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

В следующем примере функция CALCULATETABLE используется для получения суммы продаж через Интернет за 2006 г. Это значение позже используется для вычисления коэффициента продаж через Интернет по сравнению с общим объемом продаж за 2006 г.

Следующая формула:

= SUMX(
    CALCULATETABLE(
        'InternetSales_USD',
        'DateTime'[CalendarYear] = 2006
    ),
    [SalesAmount_USD]
)  

В результате создается следующая таблица:

Метки строк Internet SalesAmount_USD CalculateTable 2006 Internet Sales Internet Sales to 2006 ratio
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
Grand Total 26 054 827,45 долл. США 5 681 440,58 долл. США 4.59

См. также