Опанування контексту обчислення DAX: чому Power BI — це не просто Excel
By Mirko Peters ·
Перший перехід від традиційних електронних таблиць до інструментів бізнес-аналітики часто завершується однією й тією самою пасткою. Аналітики припускають, що вирази аналізу даних поводяться так само, як звичайні формули в електронних таблицях. Однак ставлення до Power BI як до великої книги Excel часто призводить до хибних звітів, несподіваних цифр і величезного розчарування. Щоб справді розкрити
Automatically translated with AI from the original post. Read the English original
![Cover: Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]](https://d3wo5wojvuv7l.cloudfront.net/t_rss_itunes_square_1400/images.spreaker.com/original/2efb1e72ffe98f8a3cc8d3a507928870.jpg)
Перший перехід від традиційних електронних таблиць до інструментів бізнес-аналітики часто завершується однією й тією самою пасткою. Аналітики припускають, що вирази аналізу даних поводяться так само, як звичайні формули в електронних таблицях. Однак ставлення до Power BI як до великої книги Excel часто призводить до хибних звітів, несподіваних цифр і величезного розчарування. Щоб справді розкрити потенціал сучасної аналітики, потрібно опанувати механіку контексту обчислення. У цьому всебічному посібнику ми розглянемо, чому семантичні моделі потребують іншого мислення, розберемо контекст рядка та контекст фільтра й покажемо, як підвищити свої навички моделювання даних.
Вступ до контексту обчислення в Power BI
По суті, Power BI побудовано на потужному реляційному рушії, який обробляє дані інакше, ніж традиційне програмне забезпечення на основі клітинок. Коли ви пишете вирази за допомогою Data Analysis Expressions, ваші формули не просто дивляться на статичну клітинку чи фіксований рядок вище й нижче. Натомість вони працюють у невидимому середовищі, яке називається контекстом обчислення. Розуміння цього середовища є найважливішим етапом для кожного розробника звітів. Без нього ви фактично здогадуєтеся, чому цифри змінюються, коли ви перетягуєте поле на візуалізацію. Опанування контексту обчислення долає розрив між базовою звітністю та просунутою бізнес-аналітикою корпоративного рівня.
Чому ставлення до DAX як до Excel призводить до хибних звітів
Найпоширеніше хибне уявлення серед нових розробників полягає в тому, що формули обчислюються послідовно зверху вниз, точно як у таблиці. У електронних таблицях, якщо ви записуєте формулу в клітинку C2, вона обчислює рядок 2, бо ви вказали саме на нього. Обчислення в електронних таблицях статичні й явні.
Обчислення в Power BI, натомість, динамічні та контекстні. Міра сама по собі не знає, в якому рядку вона перебуває, доки ви не вкажете їй це або доки цього не визначить навколишня візуалізація. Коли ви перетягуєте міру на матрицю, картку чи стовпчасту діаграму, програма обгортає формулу в невидимі межі. Якщо ви ігноруєте те, як ці межі працюють, ви зіткнетеся з типовими пастками, як-от загальні підсумки, що не збігаються з сумою їхніх рядків, або слайсери, які повністю знищують результати обчислень. Відмова від мислення через посилання на клітинки — перший крок до створення надійних семантичних моделей.
| Хибне уявлення | Пояснення |
|---|---|
| DAX працює як Excel | DAX працює в динамічних і невидимих контекстах обчислення, на відміну від розрахунків Excel рядок за рядком. |
| Міри повертають правильні значення в усіх візуалізаціях | Міри можуть давати різні результати в різних візуалізаціях через контекст фільтра, що призводить до плутанини. |
| Функція ALL() знімає всі фільтри | Невибіркове використання ALL() може призвести до ігнорування потрібних фільтрів і, як наслідок, до хибних результатів у звітах. |
Розбір контексту рядка: обчислення запис за записом
Щоб опанувати контекст обчислення, спершу потрібно зрозуміти його два основні компоненти: контекст рядка та контекст фільтра. Почнемо з контексту рядка. Простіше кажучи, контекст рядка діє щоразу, коли ви обчислюєте вираз для одного конкретного запису.
Коли виникає контекст рядка? Переважно в двох випадках: коли ви створюєте обчислювані стовпчики та коли використовуєте функції-ітератори (часто їх називають «X-функціями», наприклад SUMX, AVERAGEX або FILTER). Наприклад, якщо ви створюєте обчислюваний стовпчик «Total Line Cost», помноживши Quantity на Unit Price, Power BI створює контекст рядка для кожного окремого запису в цій таблиці. Він проходить таблицю рядок за рядком, обчислює добуток для кожного конкретного рядка і зберігає результат фізично у вашій моделі.
Однак обчислювані стовпчики споживають пам'ять і збільшують розмір файлу. Тому досвідчені розробники віддають перевагу мірам. Коли ви використовуєте функцію-ітератор на кшталт SUMX, ви тимчасово створюєте контекст рядка програмно. SUMX проходить таблицю рядок за рядком, обчислює вираз для кожного рядка, а потім підсумовує ці проміжні результати. Розуміння контексту рядка допомагає застосовувати обчислення в правильний час: використовувати стовпчики для статичних атрибутів рівня рядка, а міри для динамічних агрегацій.
Розбір контексту фільтра: як візуалізації та слайсери формують результати
На відміну від контексту рядка, який розглядає один запис за раз, контекст фільтра дає ширшу картину. Контекст фільтра – це сукупність усіх активних фільтрів, застосованих до моделі даних у момент обчислення формули. Ці фільтри можуть походити зі зрізів звіту, фільтрів рівня сторінки, взаємодій між візуальними елементами, заголовків рядків і явних функцій фільтрації всередині ваших мір.
Уявіть просту міру, яка обчислює загальні продажі. Якщо відобразити цю міру на порожній картці, контекст фільтра охоплює всю модель даних і повертає глобальні продажі за весь час. Але щойно ви перетягнете стовпець «Region» у стовпчикову діаграму поруч із цією мірою, контекст фільтра суттєво змінюється. Для кожного стовпчика Power BI автоматично застосовує прихований фільтр для конкретного регіону. Рушій обчислює міру продажів спочатку лише для рядків, що належать до Північної Америки, потім лише для Європи і так далі.
Саме контекст фільтра робить ваші інформаційні панелі інтерактивними та динамічними. Зрізи дозволяють користувачам миттєво змінювати цей контекст, розділяючи дані за діапазонами дат, категоріями товарів або сегментами клієнтів. Вміння керувати контекстом фільтра за допомогою потужних функцій, таких як CALCULATE, відрізняє новачків у створенні звітів від справжніх експертів із семантичних моделей.
Подолання розриву: опановуємо контекст обчислення для просунутої аналітики
Коли ви зрозумієте, як взаємодіють контекст рядка і контекст фільтра, можна переходити до створення складнішої бізнес-логіки. Класичний просунутий шаблон передбачає перехід контексту. Перехід контексту відбувається, коли ви використовуєте контекст рядка (у обчислюваному стовпці або в ітераторі) і викликаєте функцію CALCULATE. Під час виконання CALCULATE поточний контекст рядка автоматично перетворюється на еквівалентний контекст фільтра.
Це дозволяє ставити складніші запитання, наприклад: «Для кожної категорії товарів у цій таблиці, яким є загальний обсяг продажів товарів, ціна яких перевищує певний поріг?» Керуючи тим, як фільтри поширюються, за допомогою функцій KEEPFILTERS, ALLEXCEPT або змінних, ви оптимізуєте обчислення як за точністю, так і за швидкістю.
Крім того, правильно структурована модель із чіткою схемою «зірка» забезпечує плавне поширення контексту фільтра від таблиць вимірів до таблиць фактів. Коли зв’язки та контексти обчислення працюють узгоджено, ваші звіти завантажуються швидко, легко підтримуються і стабільно дають надійні бізнес-інсайти.
Висновки та наступні кроки для розробників Power BI
Опанування контексту обчислення потребує часу, практики та готовності позбутися звичок роботи з електронними таблицями. Розуміючи, як контекст рядка обчислює окремі записи і як контекст фільтра формує ваші візуальні елементи, ви отримуєте повний контроль над семантичними моделями. Щоб поглибити знання з цієї теми та почути думку експертів про архітектуру бізнес-аналітики, обов’язково послухайте відповідний епізод подкасту Power BI DAX and Semantic Models with Bernat Agulló Roselló [MVP]. Продовжуйте практикуватися, перевіряйте формули за допомогою таких інструментів, як DAX Studio, і долучайтеся до глобальної спільноти, щоб прискорити свій шлях в аналітиці!