Перша функція, з якої необхідно починати вивчення DAX є CALCULATE. Дана функція не має точного аналога в Excel, проте її можна порівняти з функціями SUMIFS та COUNTIFS. Якщо коротко, то дана функція виконує накладення фільтрів на інші розрахункові функцї, тим самим ми можемо відбирати та включати в розрахунки лише потрібні нам дані.
=CALCULATE(<статистичний вираз>, <фільтр1>, <фільтр2>, … )
<статистичний вираз>
Статистичний вираз має нам повернути результат обчислення (значення, а не таблицю). По цій причині в цьому параметрі часто використовуються статистичні функції типу SUM, MIN, MAX, COUNTROWS тощо.
<фільтр1>, <фільтр2>, …
Фільтр визначає діапазон даних над якими потрібно працювати. Тут зазначаються умови для відбору значень.
Припустимо ми маємо таку таблицю, яка називається Demo та завантажена в PowerPivot.
Давайте на її основі створимо зведену таблицю та підрахуємо кількість записів для кожного продукту.
Тепер давайте створимо нове розрахункове поле (міру) Count_All_Product в нашій зведеній таблиці, яке відображатиме загальну кількість записів навпроти усіх рядків.
Яким чином ми отримали в розрахунковому полі Count_All_Product цифри 16? Пояснення в тому, що ми зняли для цього поля всі фільтри, які були застосовані в зведеній таблиці (кожен рядок в зведеній таблиці це є окремий фільтр), за допомогою функції ALL(). Тобто, інакше кажучи, функція ALL (Demo) дає команду зняти всі фільтри для розрахункового поля Count_All_Product, які застосовуються до таблиці Demo.
Давайте добавимо ще одне поле в рядки, щоби бачити який був продаж кожного товару по містам.
Бачимо, що цифри в полі Count of Rows змінюються, а в розрахунковому полі Count_All_Product - ні. Все правильно, оскільки для останнього ми зняли усі фільтри у формулі. Тепер давайте внесемо незначні зміни у нашу формулу та подивимось на результат.
=CALCULATE(COUNTROWS(Demo);ALL(Demo[Product]))
Ми змінили аргумент для функції ALL(), замінивши Demo на Demo[Product]. Тепер фільтри будуть зняті не для усієї таблиці Demo, а лише для її стовпця Demo[Product].
Отже бачимо, що на поле Count of Rows діють фільтри Product та City, а на розрахункове поле Count_All_Product лише фільтр City.