Data Analyst Professional · Модуль 11 · Урок 38 із 51
CALCULATE та зміна filter context
CALCULATE обчислює scalar expression у зміненому filter context. Щоб ним користуватися без «магії», для кожного аргументу скажіть: який filter він додає, замінює, зберігає або прибирає.
Чотири кроки читання CALCULATE
- Визначте початковий context від visual, slicers і relationships.
- Оцініть filter arguments.
- Застосуйте modifiers: REMOVEFILTERS, KEEPFILTERS, USERELATIONSHIP.
- Обчисліть expression у новому context.
Revenue Organic :=
CALCULATE (
[Revenue],
KEEPFILTERS ( dim_channel[channel_name] = "Organic" )
)Boolean filter на column зазвичай ефективніший і зрозуміліший за FILTER(table,...). KEEPFILTERS перетинає новий filter з наявним; без нього filter тієї самої column замінюється.
Знімайте лише потрібний filter
Revenue All Channels :=
CALCULATE (
[Revenue],
REMOVEFILTERS ( dim_channel )
)Revenue % of All Channels :=
DIVIDE ( [Revenue], [Revenue All Channels] )Ця denominator measure прибирає channel filter, але зберігає date, product, customer та інші filters. ALL(fact_sales) часто зніме більше контексту, ніж просить бізнес-питання.
Context transition
Коли CALCULATE виконується в row context, він перетворює values поточного row на filters — це context transition. Measures, викликані в iterator, роблять transition автоматично. Це корисно, але nested iterators можуть створити дорогі й неочевидні calculations.
Не лікуйте неправильну модель DAX-кодом
Складні FILTER, CROSSFILTER або TREATAS не замінюють правильний grain і relationship path. Спершу перевірте модель, потім measure.
Relationship modifiers
Revenue by Ship Date :=
CALCULATE (
[Revenue],
USERELATIONSHIP (
dim_date[date_key],
fact_sales[ship_date_key]
)
)USERELATIONSHIP активує вже визначений inactive path лише для calculation. Він не створює relationship і не виправляє orphan keys.
Практика
- Створіть Revenue Organic з KEEPFILTERS і перевірте його в Paid row.
- Порахуйте частку channel, прибравши лише channel filter.
- Порівняйте REMOVEFILTERS(column), REMOVEFILTERS(table) і grand total.
- Активуйте Ship Date relationship у окремій measure.
- Запишіть before/after context для кожної CALCULATE measure.
Офіційні джерела
Готовність до тесту
Ви можете передбачити, як CALCULATE змінить context, не стираєте зайві filters і використовуєте modifiers лише з явним бізнес-наміром.
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.