Data Analyst Professional · Модуль 11 · Урок 39 із 51
Ітератори, DIVIDE і безпечні обчислення
Iterator проходить table row за row, створює row context, оцінює expression і агрегує результат. Він потрібен, коли calculation існує на detail grain, але не кожна сума потребує SUMX.
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 без бізнес-рішення.
| Стан | Рекомендований результат |
|---|---|
| немає observations | BLANK |
| observations є, сума = 0 | 0 |
| denominator = 0 | BLANK або documented constant |
| data-quality error | QA 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.
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.