M365Con 2027 – безкоштовна онлайн-конференція · 11–22 Jan 2027 · 120 sessions→ m365con.net

Blog · Mirko Peters

Опанування query folding у Power BI: передайте обробку вашому джерелу даних

By ·

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

Automatically translated with AI from the original post. Read the English original

▶ BLOGMastering Query Foldingin Power BI: Push the…M365.FM
Titelbild: Mastering Query Folding in Power BI: Push the Work to Your Data Source

Під час роботи з Power BI мало що дратує так, як оновлення даних, яке триває вічність, або, що гірше, завершується помилкою через брак ресурсів. Якщо ви завантажуєте мільйони рядків із віддаленої SQL-бази даних, корпоративного сховища даних або хмарного сервісу, від того, як ви обробляєте трансформації, багато що залежить. Кожен крок у Power Query може виконуватися ефективно на потужному сервері, де розміщені ваші дані, або повільно на вашому локальному комп’ютері чи в механізмі пам’яті служби Power BI. Саме тут на сцену виходить магія query folding.

У цій статті ми детально розберемо query folding: як він оптимізує трансформації даних, практичні техніки, які гарантують, що ваші кроки успішно «складаються» (fold), типові пастки, що розривають ланцюжок folding, і як ви можете суттєво покращити ефективність оновлення звітів. Передамо роботу туди, де їй місце: джерелу даних.

Вступ до query folding

По суті, query folding — це механізм, за допомогою якого Power Query перетворює кроки трансформації даних, які ви створюєте в інтерфейсі, на рідну мову запитів, як правило SQL, і надсилає цей запит назад до вашої бази даних для виконання. Замість того щоб завантажувати кожен рядок, таблицю та стовпець у пам’ять Power BI, а потім фільтрувати, групувати чи з’єднувати їх локально, Power BI доручає базі даних важку роботу.

Уявіть, що ви замовляєте продукти. Якщо ви прийдете до величезного складу, візьмете кожен товар із магазину, принесете їх на кухонний стіл, а потім викинете 90% через те, що вони прострочені або не те, що вам потрібно, ви марнуєте шалено багато часу й сил. Саме так відбувається без query folding. Коли query folding увімкнено, ви даєте працівнику складу конкретний список: «Дай мені лише яблука вагою понад фунт, згруповані за кольором». Працівник сортує товар на складі й передає вам невелику коробку з тим, що ви замовили. Ваша локальна кухня залишається чистою, а приготування завершується значно швидше.

Як query folding оптимізує трансформації даних

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

Коли ви застосовуєте трансформації на кшталт фільтрації рядків, видалення стовпців, сортування або базових агрегацій на ранньому етапі своїх applied steps у Power Query, конектор оцінює, чи може джерело даних виконати цю операцію нативно. Якщо так, ці кроки об’єднуються в один високооптимізований запит, який надсилається до джерела. Механізм бази даних виконує його з використанням наявних індексів, тож він може переглянути мільйони рядків за лічені мілісекунди.

І навпаки, якщо query folding розривається, Power BI змушений перетягнути весь нестиснений, нвідфільтрований набір даних мережею в механізм оцінювання Power Query (mashup engine). Щойно дані опиняються локально, Power BI застосовує ваші фільтри та трансформації, використовуючи локальні ЦП і оперативну пам’ять. Для великих корпоративних наборів даних це рецепт для тайм-аутів шлюзу, помилок нестачі пам’яті та повільних оновлень звітів.

Практичні техніки, щоб кроки коректно складалися (fold)

Не всі кроки Power Query однакові, і не всі джерела даних підтримують query folding. Реляційні бази даних, як-от SQL Server, Oracle і PostgreSQL, мають потужні можливості folding, тоді як плоскі файли, наприклад CSV або книги Excel, складаються інакше, адже в них немає власного механізму обробки запитів.

Щоб ваші кроки успішно складалися, потрібно структурувати applied steps у певній послідовності та уважно ставитися до функцій, які використовуєте. Ось практичні техніки, які допоможуть зберегти folding у ваших запитах:

Поширені помилки, що порушують фолдинг запитів

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

Розгляньмо кілька найпоширеніших помилок, які порушують фолдинг запитів:

  1. Додавання нативного SQL і подальші перетворення: Якщо ви написали нативний SQL-запит на самому початку кроку джерела даних, Power Query сприймає результат як «чорну скриньку». Наступні перетворення, додані через інтерфейс Power Query, зазвичай не фолдяться, бо Power Query не може надійно вставляти кроки інтерфейсу в користувацький SQL-блок.
  2. Перетворення типів занадто рано або не в тому порядку: Зміна типів даних є необхідною, але якщо робити її до фільтрації або до операцій, які конфліктують із правилами типізації бази даних, фолдинг може порушитися. Наприклад, перетворення числового стовпця на текст, а потім спроба виконати фільтр за числовим діапазоном, може завадити базі даних оптимізувати запит.
  3. Додавання індексних стовпців або використання номерів рядків: Функції, що покладаються на позицію рядків, наприклад «Add Index Column», або операції, які посилаються на сусідні рядки за абсолютним індексом, вимагають завантаження всього набору даних у пам'ять, щоб визначити позиції. Це миттєво зупиняє фолдинг запитів.
  4. Змішування джерел даних: Якщо ви об'єднуєте таблицю з SQL-бази даних із таблицею з файлу Excel, фолдинг запитів зупиняється на межі, де ці два джерела взаємодіють, адже Excel не може нативно обробляти SQL-запити.

Підвищення ефективності оновлення в Power BI

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

Щоб максимізувати ефективність оновлення, поєднуйте фолдинг запитів з іншими базовими практиками моделювання даних. Наприклад, переконайтеся, що таблиці вашої бази даних мають належне індексування за стовпцями, за якими ви часто фільтруєте або з'єднуєте дані. Якщо в SQL-таблицях немає індексів, навіть згорнутий запит змусить рушій бази даних виконувати затратне сканування таблиць. Крім того, поєднуйте фолдинг запитів із чистою моделлю даних «зірка», видаленням надлишкових стовпців і впровадженням політик інкрементального оновлення для великих історичних наборів даних.

Моніторинг і усунення несправностей запитів Power BI

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

Крім того, відстежуйте журнали шлюзу та профілювальники баз даних (наприклад, SQL Server Profiler або Extended Events), щоб бачити точні запити, які Power BI надсилає до джерела даних. Якщо ви бачите масивні інструкції SELECT, що витягують сирі нефільтровані таблиці, а не цільові запити з реченнями WHERE і GROUP BY, ви одразу розумієте, що фолдинг запитів десь у ваших застосованих кроках зламався.

Щоб детально розібратися з порядком виконання, типовими помилками та просунутими способами оптимізації, обов’язково послухайте відповідний подкаст і ознайомтеся з нотатками до епізоду Power Query Folding and Execution Order in Power BI. Розуміння базового порядку операцій дасть вам упевненість створювати надійні та напрочуд швидкі моделі щоразу.

Висновок

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

Щоб дізнатися більше про ці концепції та почути детальний розбір того, як порядок виконання запитів впливає на продуктивність вашого робочого простору, послухайте повне обговорення в епізоді подкасту Power Query Folding and Execution Order in Power BI. Застосуйте ці стратегії вже сьогодні — і ви побачите, як продуктивність звітів покращиться!

Power BI Power Query Power BI Service Connector Microsoft To Do Semantic model

Related articles

RSS