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

Одежда

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%

Grand Total

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 принимает таблицу значений.