Поделиться через


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