CALCULATE, функция

Завершено

Функция CALCULATE является одной из наиболее универсальных функций в Power BI. Следующий пример показывает синтаксис функции CALCULATE:

CALCULATE( <expression>, <filter1>, <filter2>, ... )

Выражение в первом параметре должно быть вычислено для возврата результата (значение) и обычно является агрегатной функцией, такой как SUM, AVG, MIN и т. п. Затем это выражение вычисляется в контексте на основе фильтров. Эти фильтры могут расширять и ограничивать текущий контекст вычисления.

С помощью функции CALCULATE можно управлять контекстом строки и фильтра. Вы можете добавлять, удалять и обновлять фильтры. CALCULATE — это ключевая функция для многих вычислений в DAX.

Добавление фильтра с помощью функции CALCULATE

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

Airplane Sales = CALCULATE( [Total Sales], 'Product Details'[ItemGroup] = "Airplane" )

Совет

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

Airplane Sales = IF [ItemGroup] = "Airplane" THEN SUM([Sales Amount] ELSE 0 END

Обновление фильтра с помощью функции CALCULATE

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

2018 Sales = CALCULATE( [Total Sales], DATE[Year] = 2018 )

Совет

Прямое сравнение с Tableau по-видимому недоступно. Чтобы выполнить эту функцию в Tableau, необходимо дублировать поля, добавить дополнительные источники данных или выполнить вычисления для каждого столбца.

Игнорирование фильтра с помощью функции CALCULATE

В следующем фрагменте кода показан пример того, как найти общий объем продаж в штатах, где Александрия указана как город ("Александрия" — это значение, выбранное в срезе города).

Total Sales All States = CALCULATE( [Total Sales], ALL( Geography[State] ) )

Совет

Вы выполните то же вычисление в Tableau с помощью выражения EXCLUDE LOD. Обратите внимание, что это выражение LOD отличается от другого степенью детализации. С помощью этого выражения необходимо исключить из представления состояние, а не штат и город:

Total Sales All States = { EXCLUDE [State] : SUM([Total Sales]) }