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

Ітератори, DIVIDE і безпечні обчислення

Iterator проходить table row за row, створює row context, оцінює expression і агрегує результат. Він потрібен, коли calculation існує на detail grain, але не кожна сума потребує SUMX.

120 хвSafe arithmeticМінітест: 3 питання

SUM чи SUMX?

Revenue := SUM ( fact_sales[revenue] )Revenue Recalculated := SUMX ( fact_sales, fact_sales[quantity] * fact_sales[unit_price] - fact_sales[discount_amount] )

SUM агрегує готову numeric column. SUMX потрібен, коли expression треба обчислити для кожного row. Iterator table має бути найменшою коректною таблицею; не ітеруйте весь fact для того, що вирішує проста aggregation.

Ratio of sums, не average of row ratios

Margin % := DIVIDE ( [Revenue] - [Cost], [Revenue] )

Правильний total margin — ratio агрегованих компонентів. AVERAGEX(fact, row margin %) дає кожному row однакову вагу й часто відповідає іншому питанню.

DIVIDE і BLANK

DIVIDE(numerator, denominator) повертає BLANK при нульовому/порожньому denominator, якщо не задано constant alternate result. BLANK дозволяє visual приховати відсутні комбінації; zero означає виміряний нуль. Не замінюйте BLANK на 0 без бізнес-рішення.

СтанРекомендований результат
немає observationsBLANK
observations є, сума = 00
denominator = 0BLANK або documented constant
data-quality errorQA flag, не маскувати arithmetic

Totals мають власний context

Measure у total row переобчислюється без category row filter. Це правильно для ratios, distinct count і non-additive metrics. Якщо бізнес вимагає «суму видимих row results», сформулюйте table grain явно:

Sum of Monthly Values := SUMX ( VALUES ( dim_date[year_month] ), [Monthly Business Measure] )

Не застосовуйте цей pattern автоматично: спершу визначте, який total має бізнес-сенс.

Практика

  • Звірте Revenue і Revenue Recalculated: обидві = 191200.
  • Порахуйте Margin % як ratio of sums і порівняйте з average row margin.
  • Створіть cases із zero denominator, empty period і measured zero.
  • Перевірте channel rows та grand total для частки.
  • Використайте VAR для denominator і debug через тимчасову measure.

Офіційні джерела

Готовність до тесту

Ви застосовуєте iterator лише на потрібному grain, рахуєте ratios із агрегованих компонентів і розрізняєте BLANK, zero та error.

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

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

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

1. Коли потрібен SUMX?
2. Коли достатньо SUM?
3. Як правильно рахувати total margin %?