Функция CALCULATETABLE
Вычисляет табличное выражение в контексте, изменяемом данными фильтрами.
Синтаксис
CALCULATETABLE(<expression>,<filter1>,<filter2>,…)
Параметры
Элемент |
Определение |
---|---|
Expression |
Вычисляемое табличное выражение |
filter1,filter2,… |
Логическое или табличное выражение, определяющее фильтр |
Выражение, используемое в качестве первого параметра, должно быть функцией, которая возвращает таблицу.
К логическим выражениям, используемым в качестве аргументов, применяются следующие ограничения.
Выражение не может ссылаться на меру.
В выражении не может использоваться вложенная функция CALCULATE.
В выражении не может использоваться функция, просматривающая таблицу или возвращающая таблицу, в том числе статистические функции.
При этом в логическом выражении может использоваться любая функция, выполняющая уточняющий запрос единственного значения или вычисляющая скалярное значение.
Возвращаемое значение
Таблица значений.
Замечания
Функция CALCULATETABLE изменяет контекст, в котором выполняется фильтрация данных, и вычисляет выражение в новом указанном контексте. Для каждого столбца, используемого в аргументе фильтра, удаляются все существующие фильтры, и вместо них применяется фильтр, указанный в аргументе фильтра.
Эта функция является синонимом для функции RELATEDTABLE.
Пример
В следующем примере функция CALCULATETABLE используется для получения суммы продаж через Интернет за 2006 г. Затем это значение используется для вычисления отношения продаж через Интернет ко всем продажам за 2006 г.
В следующей таблице показаны результаты, вычисленные по формуле.
Метки строк |
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 |
Общий итог |
$26,054,827.45 |
$5,681,440.58 |
4.59 |
=SUMX( CALCULATETABLE('InternetSales_USD', 'DateTime'[CalendarYear]=2006)
, [SalesAmount_USD])