Оптимізація DAX для LuckyTemplates за допомогою DAX Studio – механізми формул

Коли ви оптимізуєте свою модель даних і DAX для LuckyTemplates, варто пам’ятати, що за лаштунками працюють два механізми — механізм формул і механізм зберігання .

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

Зміст

Роль двигуна формул

У цій статті ми зосередимося на механізмі формул.

Механізм формул — це механізм верхнього рівня, який керує всією архітектурою запиту.

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

Механізм формул розуміє запити, отримані не лише в DAX, а й у MDX. Наприклад, коли ви використовуєте Excel, ви створюєте зведені моделі на основі зведених таблиць, а зведені таблиці фактично використовують мову MDX.

Тут починає працювати механізм формул. Оскільки він розуміє і DAX, і MDX, ви можете використовувати іншу модель LuckyTemplates. Запити, надіслані з цієї моделі даних, використовуватимуть DAX, тоді як запити, що надходять із зведеної моделі, використовуватимуть MDX.

Як працює формула

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

По-перше, він має створити план запиту, який розуміє механізм зберігання . Будучи механізмом нижчого рівня, механізм зберігання фактично не знає, чи виконали запит зведена таблиця в Excel або візуал у LuckyTemplates.

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

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

Основні обмеження механізму формул

Механізм формул відіграє величезну роль, коли ви оптимізуєте DAX для LuckyTemplates за допомогою DAX Studio. Однак він також має деякі обмеження.

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

Коли я відкрию диспетчер завдань, ви побачите, що мій ЦП має шість ядер.

Оптимізація DAX для LuckyTemplates за допомогою DAX Studio – механізми формул

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

По-друге, механізм формул не має прямого доступу до вашої бази даних . Через це обмеження вам доведеться зберігати дані або у внутрішній пам’яті, або ви можете зберегти їх у базі даних і створити DirectQuery над цією базою даних.

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

Як Formula Engine допомагає оптимізувати DAX для LuckyTemplates

Іноді, коли ви намагаєтеся оптимізувати свою модель даних або DAX для LuckyTemplates, ви помітите, що механізм зберігання сповільнюється під час виконання запитів. У цьому випадку ви можете використовувати механізм формул для завершення всього обчислення, щоб оптимізувати процес.

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

Як це буде працювати?

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

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

Зменшення навантаження на двигун формули

Знову ж таки, механізм формул розуміє коди DAX і MDX.

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

Ось чому нам також потрібно пам’ятати про зменшення навантаження на механізм формул і збільшення навантаження на механізм зберігання.

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

Коли ви використовуєте CROSSJOIN, лише обмежена кількість даних проходитиме через механізм зберігання. Що стосується решти обчислень, то все це буде виконано механізмом формул. Для порівняння, використання SUMMARIZE означає виконання всього запиту в системі зберігання.

Звичайно, це також залежатиме від того, як використовується SUMMARIZE.

Якщо SUMMARIZE використовується як внутрішня функція, тоді її точно буде переміщено до механізму зберігання. Але в деяких випадках SUMMARIZE використовується в поєднанні з іншим кодом, для роботи якого потрібна система формул. У цьому випадку механізм формул втрутиться і виконає роботу.

Знання того, куди спрямовується навантаження, може допомогти вам оптимізувати продуктивність вашого запиту, особливо якщо ви пам’ятаєте про потужність і обмеження механізмів, які є у вашому розпорядженні.

Інструменти, які можуть допомогти оптимізувати DAX для LuckyTemplates

Оптимізувати DAX буде легше, якщо ви максимізуєте інструменти, які це роблять. DAX Studio — один із таких інструментів.

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

Звичайно, це має безперебійно працювати для простих запитів. Є й більш складні сценарії.

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

Припустімо, у вашій моделі дат є дві таблиці — таблиця «Продукція» та таблиця «Продажі». Таблиця Products знаходиться в сховищі Vertipaq, тоді як таблиця Sales, будучи більшою таблицею, зберігається безпосередньо в базі даних через підключення DirectQuery.

Припустімо також, що ви перетягуєте стовпець «Бренд» у матрицю, а також показник «Загальний обсяг продажів», який надходить із таблиці «Продажі» в межах підключення DirectQuery.

У цьому випадку механізм формули повинен буде виконувати операцію між обома двигунами.

По-перше, він отримає стовпці "Ключ продукту" та "Бренд" із таблиці "Продукти". Потім він отримає стовпці Чиста ціна, Кількість і Ключ продукту з таблиці Продажі. Отримавши кеш даних від Vertipaq і DirectQuery, механізм формул повинен взяти кеш даних і спробувати об’єднати їх, щоб надати результати кінцевому користувачеві.




Висновок

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

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

Ми розглянемо глибше механізм зберігання в окремому посібнику.

Все найкраще,


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

У цьому підручнику ви дізнаєтесь, як об’єднати функції разом за допомогою оператора каналу dplyr мовою програмування R.

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX від LuckyTemplates дозволяє повернути рейтинг певного числа в кожному рядку таблиці, який є частиною списку чисел.

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

Дізнайтеся, як інсталювати мову програмування Python у LuckyTemplates і як використовувати її інструменти для написання кодів і відображення візуальних елементів.

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

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

Сортування стовпців таблиці дат у LuckyTemplates

Сортування стовпців таблиці дат у LuckyTemplates

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

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

У цій статті я поясню, як знайти найпопулярніші продукти для регіону за допомогою обчислень DAX у LuckyTemplates, включаючи функції TOPN і CALCULATE.

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

Дізнайтеся, як використовувати вимірювання сміття для позначок низької потужності, які ви хочете ефективно включити у свою модель даних.