Здатність змінювати контекст у мірі дуже важлива в DAX.
Ми почнемо з прикладу, створивши показник під назвою Sales LY , який використовує функцію CALCULATE для порівняння продажів на поточну дату з продажами на ту ж дату минулого року .
У функції CALCULATE ми введемо загальний обсяг продажів , оскільки перший параметр CALCULATE може мати будь-який вираз .
Тоді я буду використовувати aдзвонив. Функції аналізу часу – це функції, які використовуються для обчислень, пов’язаних із часом .
Оскільки ми розміщуємо SAMEPERIODLASTYEAR у CALCULATE , ми коригуватимемо наш поточний контекст на один рік за допомогою нашого стовпця Date .
Перетягнувши новий показник, ви побачите, що стовпці «Загальні продажі» та «Продажі LY» мають різні результати.
Причина цього полягає в тому, що значення всередині Sales LY беруться із загального обсягу продажів рівно рік тому .
Щоб показати приклад, давайте подивимось на значення Sales LY за дату 28/02/2020 .
Оскільки його вартість становить 10 440 доларів США , оглядаючи загальний обсяг продажів за дату 28.02.2019, ви отримаєте точно такий же результат.
Він визнає 28/02/2020 поточною датою, але змінює контекст на ту саму дату в 2019 році через стовпець Продажі LY .
Ось чому CALCULATE є такою важливою функцією в LuckyTemplates. Це дозволяє виконувати обчислення багатьма різними способами, наприклад, коли вам потрібно знайти різницю між загальними продажами та продажами LY .
Зміна контексту по кварталах
Я також можу змінити контекст стовпця "Дата" , щоб я міг переглядати квартальні значення замість щоденних .
Спочатку я перетягну стовпець QuarterInCalendar , який можна знайти в таблиці Dates .
Перше, що ви тут помітите, це неправильне сортування дат . Щоб виправити це, я відсортую стовпець під назвою QuarterInYear .
Я перейду до області даних і виділю стовпець QuarterInCalendar .
Потім я можу вибрати опцію QuarterInYear у розділі Sort by column .
Коли ми повернемося до попереднього екрана, ви побачите, що у нас уже є квартали в правильному порядку.
Раніше ми робимо те саме, але значення накопичуються з іншою деталізацією, оскільки ми розглядаємо квартали, а не дні.
Наприклад , у другому кварталі 2020 року загальна вартість продажів становить 2 839 495 доларів США . Але коли ми дивимося на значення Sales LY , контекст змінюється на рік тому, коли загальна вартість продажів за другий квартал 2019 року становить 3 665 971 долар .
Функція CALCULATE дає змогу працювати різними способами, використовуючи однакову інформацію, не переписуючи формули чи обчислення.
Загальний обсяг продажів у певному місці за допомогою CALCULATE
Я також хочу показати вам інший спосіб налаштування контексту в CALCULATE .
Раніше ми повністю змінили контексти обчислень, але тепер я хочу показати вам приклад, де замість цього ми трохи відфільтруємо контекст.
Що, якби я захотів підрахувати всі свої продажі в певному місці , зокрема в Північній Кароліні?
Для цього я можу створити новий показник під назвою Sales in NC , використати CALCULATE із виразом Total Sales , а потім використовувати код штату в таблиці Locations як фільтр і встановити для нього значення «NC» .
Після того, як ми перетягнемо наш новий показник, ми зможемо побачити розподіл загальних продажів лише в певному регіоні на основі контексту назви продукту .
Порівняно з Sales LY , де контекст було повністю змінено, контекст у Sales in NC було просто скориговано.
Ось чому CALCULATE стане вашою найуживанішою функцією, оскільки є багато способів, якими ви можете налаштувати контекст.
Якщо ви подивитесь на будь-який розширений вміст із LuckyTemplates, ви побачите, що CALCULATE використовується майже в усьому, оскільки формули можна писати дуже ефективно, використовуючи його.
Можливо, ви вже бачили дуже довгі формули, написані в двох-трьох рядках. У LuckyTemplates ви можете мати цілий ряд різних обчислень, просто налаштувавши контекст.
Щоб показати інший приклад, я можу перетягнути показник Sales in NC разом із показником QuarterInCalendar .
Мені не довелося вносити зміни у формулу, але я додав контекст у порівнянні з нашим попереднім прикладом, де ми його відкоригували.
Оскільки у нас уже є щоквартальні продажі, додавання в «Продажі в Північній Кароліні» дало нам щоквартальні продажі, зокрема в Північній Кароліні .
Є невелика різниця порівняно з повною зміною контексту, як у Sales LY , де ми використовували функцію аналізу часу для маніпулювання датою.
Показник Sales in NC — це лише фільтр розташування , яке не пов’язане з початковим контекстом QuarterInCalendar , яким є date .
Висновок
Це був лише вступ до функції CALCULATE у LuckyTemplates про те, як ви можете використовувати її для зміни, коригування або додавання контексту ваших обчислень.
Я хочу, щоб ви подумали про те, як ви можете застосувати це до того, над чим ви працюєте. Якщо ви можете скористатися цією функцією, ви можете швидко створювати комбінації формул і методи для обчислення більшої кількості речей.