CALCULATE, функция
Вычисляет выражение в контексте, изменяемом указанными фильтрами.
Синтаксис
CALCULATE(<expression>,<filter1>,<filter2>…)
Параметры
Элемент |
Определение |
---|---|
expression |
Вычисляемое выражение. |
filter1,filter2,… |
(Необязательно) Список логических выражений или табличных выражений, определяющих фильтр, с разделителями-запятыми. |
Выражение, используемое в качестве первого параметра, фактически представляет меру.
К логическим выражениям, используемым в качестве аргументов, применяются следующие ограничения.
Выражение не может ссылаться на меру.
В выражении не может использоваться вложенная функция CALCULATE.
В выражении не может использоваться функция, просматривающая таблицу или возвращающая таблицу, в том числе статистические функции.
При этом в логическом выражении может использоваться любая функция, выполняющая уточняющий запрос единственного значения или вычисляющая скалярное значение.
Возвращаемое значение
Значение, являющееся результатом выражения.
Замечания
Если данные отфильтрованы, функция CALCULATE изменяет контекст, в котором выполняется фильтрация данных, и вычисляет выражение в новом указанном контексте. Для каждого столбца, используемого в аргументе фильтра, удаляются все существующие фильтры, и вместо них применяется фильтр, указанный в аргументе фильтра.
Пример
Чтобы определить отношение текущих продаж через посредников ко всем продажам через посредников, добавьте меру продаж в сводной таблице, вычисляющую сумму продаж для текущей ячейки (числитель) и делящую ее на сумму по всем продажам через посредников (знаменатель). Чтобы обеспечить использование постоянного знаменателя независимо от фильтрации и группирования данных сводной таблицы, в числителе формулы должна использоваться функция ALL для очистка всех фильтров и создания правильного итога.
В следующей таблице показаны результаты для случая, когда создается новая мера с именем All Reseller Sales Ratio с использованием формулы в поле кода.
Чтобы увидеть работу образца, добавьте поле CalendarYear в область Row Labels сводной таблицы, а поле ProductCategoryName в область Column Labels. Затем добавьте новую меру в область Values сводной таблицы. Для отображения чисел в виде процентов примените процентное форматирование к области сводной таблицы, содержащей новую меру, All Reseller Sales Ratio.
All Reseller Sales |
Column Labels |
|
|
|
|
---|---|---|---|---|---|
Row Labels |
Accessories |
Bikes |
Clothing |
Components |
Общий итог |
2005 |
0.02% |
9.10% |
0.04% |
0.75% |
9.91% |
2006 |
0.11% |
24.71% |
0.60% |
4.48% |
29.90% |
2007 |
0.36% |
31.71% |
1.07% |
6.79% |
39.93% |
2008 |
0.20% |
16.95% |
0.48% |
2.63% |
20.26% |
Общий итог |
0.70% |
82.47% |
2.18% |
14.65% |
100.00% |
=( SUM('ResellerSales_USD'[SalesAmount_USD]))
/CALCULATE( SUM('ResellerSales_USD'[SalesAmount_USD])
,ALL('ResellerSales_USD'))
Выражение CALCULATE в знаменателе позволяет выражению суммы включить все строки в вычисление. Это заменяет неявные фильтры для столбцов CalendarYear и ProductCategoryName, которые применяются для части числителя в выражении.
Связанные функции
Первым аргументом функции CALCULATE должно быть выражение, возвращающее единичное значение, а функция CALCULATETABLE принимает таблицу значений.