Оптимізація 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.

Leave a Comment

Змініть формати дати за допомогою редактора Power Query

Змініть формати дати за допомогою редактора Power Query

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

Power Query: об’єднайте файли з кількох папок

Power Query: об’єднайте файли з кількох папок

Дізнайтеся, як об’єднати файли з кількох папок у мережі, робочому столі, OneDrive або SharePoint за допомогою Power Query.

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Цей підручник пояснює, як обчислити місячне ковзне середнє на базі даних з початку року за допомогою функцій AVERAGEX, TOTALYTD та FILTER у LuckyTemplates.

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

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

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

Мобільні звіти LuckyTemplates. Поради та методи

Мобільні звіти LuckyTemplates. Поради та методи

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

Звіти про професійну аналітику послуг у LuckyTemplates

Звіти про професійну аналітику послуг у LuckyTemplates

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

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Ознайомтеся з основними оновленнями для Power Apps і Power Automate, а також їх перевагами та наслідками для Microsoft Power Platform.

Загальні функції SQL: огляд

Загальні функції SQL: огляд

Відкрийте для себе деякі поширені функції SQL, які ми можемо використовувати, наприклад String, Date і деякі розширені функції для обробки та маніпулювання даними.

Створення шаблону LuckyTemplates: керівництво та поради

Створення шаблону LuckyTemplates: керівництво та поради

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

Параметри полів і малі кратні в LuckyTemplates

Параметри полів і малі кратні в LuckyTemplates

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