Оптимізація DAX: де знайти приховану пастку DAX

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

Давайте спочатку подивимося, з чим ми тут працюємо. Ми маємо дані приблизно за 10 років з Internet Movie Database. Таблиці фактів досить прості, і ми маємо дані про рейтинги, дані про бюджет і валові дані.

Сьогодні ми подивимося на світові прибутки.

Оптимізація DAX: де знайти приховану пастку DAX

У нас також є розширена таблиця дат. Це буде аналіз даних про час на основі таблиці дат і таблиці фактів.

Оптимізація DAX: де знайти приховану пастку DAX

Зміст

Загальний світовий валовий прибуток за рік

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

Оптимізація DAX: де знайти приховану пастку DAX

Для цього ми беремо чисельник (вимірник загального світового валового показника) і знаменник (вимірник загального світового валового показника, але вилучили контекст із фільтра року).

Оптимізація DAX: де знайти приховану пастку DAX

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

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

Оптимізація DAX: де знайти приховану пастку DAX

Загальний світовий валовий прибуток за квартал

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

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

Оптимізація DAX: де знайти приховану пастку DAX

І якщо ми опустимо міру, яку ми щойно зробили, у таблицю, вона також зробить саме те, що ми очікуємо.

Оптимізація DAX: де знайти приховану пастку DAX

Загальний світовий валовий прибуток за місяць і рік

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

Оптимізація DAX: де знайти приховану пастку DAX

І знову ми будемо використовувати ту саму міру, що й раніше. Але цього разу ми знімемо фільтр на місяць і рік.

Оптимізація DAX: де знайти приховану пастку DAX

Давайте опустимо це до нашого столу. Раптом не працює.

Оптимізація DAX: де знайти приховану пастку DAX

Ми можемо сказати, що тут не працює. Ми знаємо, що валовий показник у всьому світі працює, тож це означає, що чисельник правильний, а знаменник – ні. У кожному з попередніх випадків функція REMOVEFILTERS видаляла фільтр належним чином, але тут явно ні.

Ми можемо фактично перевірити це, змінивши те, що ми повернули тут у результаті.

Оптимізація DAX: де знайти приховану пастку DAX

Замість Результату використовуймо Знаменник. Майте на увазі, що це буде відформатовано у відсотках, тому це виглядатиме трохи смішно.

Оптимізація DAX: де знайти приховану пастку DAX

Те, що ми повинні отримати для знаменника, це одне й те саме число в кожному рядку, але це не так.

Оптимізація DAX: де знайти приховану пастку DAX

Ми можемо сказати, що він не видаляє фільтр місяця та року, і думаємо, що це тому, що місяць і рік є в тексті.

Оптимізація DAX: де знайти приховану пастку DAX

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

У розширеній таблиці дат давайте розглянемо це поле під назвою « Місяць і рік» . Якщо ми подивимося на це в стовпці «Сортувати за» , то побачимо щось цікаве.

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

Оптимізація DAX: де знайти приховану пастку DAX

Давайте повернемося до нашої міри та видалимо контекст місяця та року, який ми використовуємо для сортування.

Оптимізація DAX: де знайти приховану пастку DAX

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

Оптимізація DAX: де знайти приховану пастку DAX

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

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

Як загальний принцип оптимізації DAX, вам потрібно видалити стільки контексту фільтра, скільки потрібно, щоб отримати бажаний результат.

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

Оптимізація DAX: де знайти приховану пастку DAX

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

Оптимізація DAX: де знайти приховану пастку DAX

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

Оптимізація DAX: де знайти приховану пастку DAX

Для обсягу року ми маємо видалити контекст для року та для всієї таблиці.

Оптимізація DAX: де знайти приховану пастку DAX

Давайте подивимося, що станеться, якщо ми візьмемо та вилучимо весь контекст. Ми використаємо іншу міру, яка видаляє контекст у всій таблиці дат для всіх трьох випадків.

Оптимізація DAX: де знайти приховану пастку DAX

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

Висновок

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

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

Якщо вам сподобалася тема оптимізації DAX, розглянута в цьому посібнику, підпишіться на телеканал LuckyTemplates . У нас постійно надходить величезна кількість вмісту від мене та низки творців контенту, усі з яких прагнуть покращити спосіб використання LuckyTemplates і Power Platform.


Поле пошуку PowerApps: як додати та налаштувати

Поле пошуку PowerApps: як додати та налаштувати

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

Приклад SELECTEDVALUE DAX – вибір розділювача врожаю

Приклад SELECTEDVALUE DAX – вибір розділювача врожаю

Збирайте або фіксуйте значення в мірі для повторного використання в іншій мірі для динамічних обчислень за допомогою SELECTEDVALUE DAX у LuckyTemplates.

Історія версій у списках SharePoint

Історія версій у списках SharePoint

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

Вибір шістнадцяткових кодів кольорів для звітів LuckyTemplates

Вибір шістнадцяткових кодів кольорів для звітів LuckyTemplates

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

Динамічний роздільник дат у LuckyTemplates із використанням таблиці Менделєєва

Динамічний роздільник дат у LuckyTemplates із використанням таблиці Менделєєва

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

Таблиці пропорцій і частот в Excel

Таблиці пропорцій і частот в Excel

Збирався зануритися в частотні таблиці в Excel, а також у таблиці пропорцій. Добре подивіться, що це таке і коли їх використовувати.

Як інсталювати DAX Studio та табличний редактор у LuckyTemplates

Як інсталювати DAX Studio та табличний редактор у LuckyTemplates

Дізнайтеся, як завантажити та інсталювати DAX Studio та Tabular Editor 3 і як налаштувати їх для використання в LuckyTemplates і Excel.

Візуалізація карти форми LuckyTemplates для просторового аналізу

Візуалізація карти форми LuckyTemplates для просторового аналізу

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

Фінансова звітність LuckyTemplates: розподіл результатів за шаблонами в кожному окремому рядку

Фінансова звітність LuckyTemplates: розподіл результатів за шаблонами в кожному окремому рядку

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

Вимірювання DAX у LuckyTemplates за допомогою розгалуження вимірювання

Вимірювання DAX у LuckyTemplates за допомогою розгалуження вимірювання

Створіть показники DAX у LuckyTemplates, використовуючи наявні показники або формули. Це те, що я називаю технікою розгалуження міри.