Data Analyst Professional · Модуль 11 · Урок 38 із 51

CALCULATE та зміна filter context

CALCULATE обчислює scalar expression у зміненому filter context. Щоб ним користуватися без «магії», для кожного аргументу скажіть: який filter він додає, замінює, зберігає або прибирає.

120 хвFilter surgeryМінітест: 3 питання

Чотири кроки читання CALCULATE

  1. Визначте початковий context від visual, slicers і relationships.
  2. Оцініть filter arguments.
  3. Застосуйте modifiers: REMOVEFILTERS, KEEPFILTERS, USERELATIONSHIP.
  4. Обчисліть 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 лише з явним бізнес-наміром.

Практична перевірка · урок 38 з 51

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Що робить CALCULATE?
2. Що стається з filter тієї самої column без KEEPFILTERS?
3. Що робить KEEPFILTERS?