Розуміння архітектури механізму Power BI: глибоке занурення

У світі аналізу даних ми часто використовуємо потужні інструменти, такі як Power BI, не до кінця розуміючи складні внутрішні механізми роботи Power BI. Ця прогалина в знаннях не є лише академічною — розуміння внутрішньої роботи цих інструментів відкриває значні можливості для оптимізації. Коли ми розуміємо, як Power BI обробляє наші дані на архітектурному рівні, ми можемо розробляти рішення, які працюють разом з його базовими механізмами, а не проти них.

Ця стаття є частиною серії „Глибока інженерія“, присвяченої внутрішній будові сучасних інструментів для роботи з даними, щоб розкрити їхні основні механізми. Сьогодні ми дослідимо складну екосистему механізмів, що працюють під капотом Power BI — від початкового вилучення та перетворення даних до остаточного аналізу та візуалізації. Розуміючи, як ці різні механізми взаємодіють, ви отримаєте інформацію, яка може значно покращити ваші реалізації Power BI, зробивши їх ефективнішими, продуктивнішими та масштабованішими.

🎖️ Статтю відзначила спільнота Power BI Masterclass як матеріал, рекомендований до прочитання

Табличний рушій Analysis Services: основа роботи Power BI

Під час запуску Power BI Desktop створюється локальний екземпляр табличного механізму SQL Server Analysis Services. Це основний механізм обробки, який забезпечує всі ваші операції з даними. Щоразу, коли ви відтворюєте візуальний елемент у звіті Power BI, за лаштунками виконується запит DAX до цього табличного механізму Analysis Services.

Після публікації звіту його модель даних обробляється в Power BI Service за допомогою відповідної інфраструктури табличного рушія. Особливості обробки залежать від типу моделі та конфігурації середовища. Така архітектура забезпечує стабільну продуктивність незалежно від того, чи працюєте ви локально, чи в хмарі.

Mashup Engine: рушій підготовки даних

Перш ніж дані потраплять до табличного механізму Analysis Services, вони зазвичай проходять через Mashup Engine. Це механізм, який забезпечує роботу як Power Query в Power BI Desktop, так і потоків даних у службі Power BI.

Двигун Mashup (також відомий як M Engine) відповідає за:

  • Підключення до різних джерел даних
  • Застосування перетворень, визначених мовою M (мова, на якій базується Power Query)
  • Очищення та перетворення структури даних
  • Об’єднання та додавання запитів
  • Перетворення типів даних

Коли ви працюєте в редакторі Power Query у Power BI Desktop, ви взаємодієте з механізмом Mashup. Кожен крок, який ви створюєте в інтерфейсі користувача, генерує M-код, який виконує механізм. Аналогічно, коли потоки даних запускаються в службі Power BI, вони виконують M-код через хмарну версію механізму Mashup.

Механізм Mashup працює окремо від механізму Analysis Services, створюючи чітке розмежування між підготовкою даних (ETL) та моделюванням/аналізом даних. Таке розділення забезпечує більшу гнучкість та оптимізацію продуктивності на кожному етапі конвеєра даних. Після завершення роботи механізм Mashup передає перетворені дані до табличного механізму Analysis Services для моделювання та аналізу.

Два компоненти табличного рушія: Formula Engine і Storage Engine

Табличний механізм Analysis Services працює з використанням двох основних компонентів, що працюють разом: механізму формул та механізму сховища. Розуміння їхнього взаємозв’язку є ключовим для оптимізації продуктивності Power BI.

Двигун формул (FE): Логічний процесор

Механізм формул відповідає за виконання запитів DAX та обробку всіх вимог до логічної обробки. Його основні функції включають:

  • Розбір та перевірка виразів DAX
  • Виконання математичних розрахунків
  • Виконання об’єднань та додавання між таблицями
  • Керування логічними операціями та перетвореннями даних
  • Застосування фільтрів до наборів даних

Критичною характеристикою Formula Engine є те, що він працює як однопотоковий рушій. Це означає, що він обробляє інструкції послідовно, виконуючи одну операцію за іншою без паралелізації. Це може стати вузьким місцем продуктивності для складних обчислень, особливо коли їх не можна делегувати Storage Engine.

Механізм зберігання даних (SE): засіб отримання даних

Коли механізму формул потрібні дані для виконання обчислень, він надсилає запити до механізму сховища. Основним обов’язком механізму сховища є ефективне отримання даних.

На відміну від механізму формул, механізм сховища є багатопотоковим. Після отримання інструкцій від FE він може виконувати кілька компонентів своїх запитів одночасно, що значно покращує продуктивність операцій пошуку даних.

Поведінка механізму сховища залежить від режиму сховища, налаштованого для вашої моделі Power BI:

Режим імпорту (Import)

Коли дані імпортуються в Power BI (стандартний і найпоширеніший сценарій), механізм сховища надсилає запит xmSQL (внутрішня мова запитів) до механізму VertiPaq. VertiPaq — це високооптимізована технологія стовпцевої бази даних у пам’яті, яка стискає дані та забезпечує надзвичайно швидке їх отримання. У планах виконання запитів ці операції відображаються як кроки «Кешування», що вказує на те, що дані витягуються з кешу в пам’яті.

Режим прямого запиту

Під час використання DirectQuery, Storage Engine перетворює свої запити на нативні SQL-запити та надсилає їх безпосередньо до вихідної системи бази даних. Це дозволяє Power BI працювати з даними, які залишаються у вихідній системі, без їх імпорту. Продуктивність у цьому режимі значною мірою залежить від можливостей вихідної системи та мережевого з’єднання між Power BI та джерелом даних.

Повний процес потоку даних

Розуміння того, як усі ці механізми працюють разом, допомагає пояснити типовий процес у рішенні Power BI:

  1. Збір та перетворення даних : Mashup Engine підключається до джерел даних та застосовує перетворення Power Query.
  2. Завантаження даних : Трансформовані дані завантажуються в механізм VertiPaq у режимі DirectQuery дані залишаються у вихідному джерелі, а Power BI надсилає до нього запити під час отримання результатів візуалізацій.
  3. Ініціалізація запиту : користувач взаємодіє з візуальним елементом, що генерує запит DAX.
  4. Обробка запитів : Механізм формул отримує та аналізує цей запит
  5. Запит на отримання даних : FE визначає, які дані йому потрібні, та надсилає запити до механізму сховища.
  6. Отримання даних : SE отримує необхідні дані (або з VertiPaq, або з вихідної системи)
  7. Остаточний розрахунок : FE застосовує будь-які розрахунки, які не можна було делегувати SE.
  8. Відображення результатів : результати повертаються до візуального елемента для відображення.

Розподіл обчислень між різними компонентами пояснює, чому одні запити Power BI виконуються швидко, а інші потребують більше часу. Операції, які можна передати багатопотоковому механізму сховища та ефективно обробити VertiPaq, як правило, працюють надзвичайно добре. Складні обчислення, що потребують значної роботи Formula Engine, можуть уповільнювати виконання запитів.

Механізм VertiPaq: секретна зброя Power BI

Механізм VertiPaq заслуговує на особливу увагу, оскільки саме він відповідає за значну частину вражаючої продуктивності Power BI під час роботи з імпортованими даними. Цей стовпцевий рушій бази даних, що працює в оперативній пам’яті:

  • Значно стискає дані (часто досягаючи коефіцієнта стиснення 10:1)
  • Організовує дані у стовпцях, а не в рядках, оптимізуючи для аналітичних запитів
  • Підтримує словники та зв’язки для швидкого пошуку
  • Використовує складні алгоритми для обробки сканування та агрегації даних

Дизайн VertiPaq робить його особливо пристосованим для типів операцій, поширених у бізнес-аналітиці: фільтрації, групування та агрегації великих наборів даних.

Архітектура рушіїв у Power BI Service

Під час роботи з Power BI Service екосистема рушія розширюється:

  • Механізм масшування даних : виконує M-перетворення у хмарі
  • Преміум-місткість : забезпечує виділені ресурси для різних двигунів
  • Служби аналізу Azure : Розміщує функціональність механізму формул та механізму сховища.
  • Power Query Online : Надає інтерфейс на основі браузера для Mashup Engine.

Ця розподілена архітектура дозволяє Power BI ефективно масштабуватися в корпоративних сценаріях, зберігаючи при цьому ту саму фундаментальну структуру механізму.

Висновок

Архітектура Power BI використовує спеціалізовані механізми, розроблені спеціально для різних етапів аналітичного робочого процесу. Розуміння взаємозв’язку між Mashup Engine, Formula Engine, Storage Engine та VertiPaq допомагає пояснити характеристики продуктивності Power BI та допомагає оптимізувати продуктивність.

Щоб підвищити продуктивність:

  • Розробляйте ефективні перетворення Power Query для оптимізації роботи Mashup Engine
  • Використовуйте міри та обчислення» — якщо йдеться про DAX measures, які можна делегувати Storage Engine, коли це можливо.
  • Оптимізуйте обчислення, які створюють значне навантаження на Formula Engine.
  • Виберіть відповідний режим зберігання даних, виходячи з ваших конкретних вимог та обсягів даних

Розуміння внутрішньої будови Power BI допомагає розробникам і аналітикам ефективніше готувати дані, оптимізувати моделі та швидше створювати звіти.


Дякую за прочитання!

Будь ласка, не соромтеся поставити 50 оплесків 👏, якщо ця стаття була корисною, залиште коментар або поділіться нею з іншими.

👉 Підпишіться на мене або ✉️ , щоб отримувати всі мої статті про Power BI!

Знайдіть мене в LinkedIn .


Не забудьте підписатися на

👉 Публікація Power BI

👉 Розсилка Power BI

та приєднуйтесь до нашої спільноти Power BI:

https://linktr.ee/powerbi.masterclass?source=post_page—–c162dbcfa895—————————————–

Класифікація статей майстер-класу Power BI

Обов’язково прочитайте : Так

Рівень: Початківець, Середній, Експерт

Категорія: Посібник, Модель даних

Теги: Посібник, Модель даних

ОРИГІНАЛ СТАТТІ:Understanding Power BI Engine Architecture: A Deep Dive

АВТОР СТАТІ:Avishek Ghosh (AV_DEVS)

🚀Долучайтесь до нашої спільноти Telegram:

🚀Долучайтесь до нашої спільноти FaceBook:

🚀Долучайтесь до нашої спільноти Twiter X:

Leave a Reply