Перегляд перших N робочих днів – рішення мови кодування DAX

Давайте ще раз поглянемо на проблему, розглянуту в , яка динамічно порівнює перші N робочих днів кожного місяця. Ця проблема виникла на основі запиту від учасника LuckyTemplates на нашому форумі, де він хотів динамічно переглянути та порівняти перші 5, 10, 15 і 20 оплачуваних днів (невихідних і несвяткових днів) для певного місяця з попереднього місяця.

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

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

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Давайте зануримося в power query і подивимося, що тут зробив Antriksh. У нас є місяць і рік , загальний обсяг продажів і, нарешті, загальний обсяг продажів за N робочих днів , які ми вибрали за допомогою потужного запиту на основі розробленого нами параметра «що-якщо».

Перегляд перших N робочих днів – рішення мови кодування DAX

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Це функція DAX, яку я використовую не дуже часто, але вона ідеально підходить для такого типу проблем. Якщо ми подивимося на посібник із SQL BI DAX, там сказано, що функція GENERATE — це таблична функція, яка використовує дві різні таблиці як вхідні дані, а потім виконує еквівалент команди SQL CROSS APPLY.

Перегляд перших N робочих днів – рішення мови кодування DAX

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

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Давайте розберемо цей захід. Перший фільтр, застосований тут, – це Дати[РобочийДень] = ІСТИНА. Це видаляє всі невихідні та несвяткові дати на основі поля IsBusinessDay розширеної таблиці дат.

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Цікава частина цього насправді полягає у двох вхідних даних таблиці. Перша таблиця — це таблиця з одним стовпцем поля «Місяць і рік» у таблиці «Дата».

Перегляд перших N робочих днів – рішення мови кодування DAX

Але вхідні дані другої таблиці — це місце, де відбуваються цікаві речі. Antriksh використав a, а потім використав наш динамічний параметр як кількість рядків у TOPN.

Перегляд перших N робочих днів – рішення мови кодування DAX

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Зміст

Розуміння складної міри за допомогою мови кодування DAX

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Давайте скопіюємо частину TOPN і створимо нову. Пам’ятайте, що запити DAX починаються з EVALUATE.

Перегляд перших N робочих днів – рішення мови кодування DAX

Коли ми вставимо частину TOPN, ми побачимо, що це витягує перші 5 дат із таблиці замовлень на продаж. У TOPN є таблиця, яка складається зі значень усіх дат замовлень у таблиці продажів.

Ця функція TOPN приймає значення параметра «що-якщо» (у цьому випадку дорівнює 5) і застосовує його до поля дати замовлення на продаж. Потім він витягує перші 5 дат у контексті фільтра в порядку зростання на основі цього поля.

Перегляд перших N робочих днів – рішення мови кодування DAX

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

Перегляд перших N робочих днів – рішення мови кодування DAX

Стовпець @Sales просто додає загальні продажі в межах відповідного контексту фільтра до таблиці TOPN.

Перегляд перших N робочих днів – рішення мови кодування DAX

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

Використання таблиці GENERATE мовою кодування DAX

Давайте подивимося, що робить ця таблиця GENERATE. Ми повернемося до редактора таблиць і створимо новий запит DAX.

Ми почнемо, як завжди, з EVALUATE, вставимо частину коду GENERATE і натиснемо 5.

Перегляд перших N робочих днів – рішення мови кодування DAX

Ми бачимо, що для кожного рядка першої таблиці відбувається ітерація та об’єднання з 5 рядками з таблиці TOPN, які обчислюються в контексті за допомогою функції @Sales.

Це зайняло перші 5 робочих днів квітня, перші 5 робочих днів травня, перші 5 робочих днів червня і так далі, поки не дійде до кінця першої таблиці.

Перегляд перших N робочих днів – рішення мови кодування DAX

Це саме те, що нам потрібно, і тепер додавати ці значення стає відносно просто. У нас є результат (який є змінною таблиці результатів GENERATE), а потім нам потрібно підсумувати функцію @Sales.

У контексті ми зараз підсумовуємо перші 5 робочих днів квітня, перші 5 робочих днів травня і так далі, поки не досягнемо загальної суми 23 737 430 дол. .

Це підсумовує весь стовпець @Sales і отримує точнісінько ту саму суму, яку ми мали в нашому рішенні Power Query.

Перегляд перших N робочих днів – рішення мови кодування DAX

Ви бачите, що якщо ми змінюємо роздільник на 10, ми динамічно отримуємо ті самі результати з мовою кодування DAX, що й у Power Query.

Перегляд перших N робочих днів – рішення мови кодування DAX

У нас також є гістограма внизу, яка динамічно коригується, щоб відобразити внесені зміни.

Перегляд перших N робочих днів – рішення мови кодування DAX

Динамічне налаштування назви такту

Є ще один додатковий прийом, який я хотів вам показати. Ви можете створити динамічне коригування свого параметра "що-якщо" та динамічно прив'язати його до назви міри.

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

Перегляд перших N робочих днів – рішення мови кодування DAX

У DAX є простий спосіб зробити це за допомогою . В основному ми беремо лише три струни. Перший — це загальний обсяг продажів для First , а потім об’єднуємо його зі значенням, отриманим із параметра «що-якщо», а потім просто прив’язуємо це до решти заголовка.

Перегляд перших N робочих днів – рішення мови кодування DAX

Потім переходимо до візуального елемента, переходимо до умовного форматування заголовка та натискаємо fx .

Перегляд перших N робочих днів – рішення мови кодування DAX

Ми відформатуємо за значенням поля та виберемо цю міру динамічного заголовка. Це змінить вибір параметра що-якщо.

Перегляд перших N робочих днів – рішення мови кодування DAX

Висновок

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


Змініть формати дати за допомогою редактора 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

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