Змініть формати дати за допомогою редактора Power Query
У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора Power Query в LuckyTemplates.
Давайте ще раз поглянемо на проблему, розглянуту в , яка динамічно порівнює перші N робочих днів кожного місяця. Ця проблема виникла на основі запиту від учасника LuckyTemplates на нашому форумі, де він хотів динамічно переглянути та порівняти перші 5, 10, 15 і 20 оплачуваних днів (невихідних і несвяткових днів) для певного місяця з попереднього місяця.
Замість використання потужних запитів ми розробимо рішення мови кодування DAX. Ви можете переглянути повне відео цього підручника внизу цього блогу.
У першому відео я придумав рішення потужного запиту про те, як вирішити цю проблему. Але потім один із наших експертів LuckyTemplates, Антрікш Шарма, запропонував неймовірно ефективний захід, який також вартий більш глибокого вивчення. Ми обговоримо деякі прийоми, які він використовував для розробки міри, яка надасть вам додаткові інструменти у наборі інструментів DAX.
Це, безумовно, для мене та для деяких інших експертів, які подивилися на це. Подібне порівняння порівнянних робочих днів за місяці є цінним шаблоном, який можна використовувати в багатьох ситуаціях.
Давайте зануримося в power query і подивимося, що тут зробив Antriksh. У нас є місяць і рік , загальний обсяг продажів і, нарешті, загальний обсяг продажів за N робочих днів , які ми вибрали за допомогою потужного запиту на основі розробленого нами параметра «що-якщо».
Антрікш застосував зовсім інший підхід, де він використав шокуюче короткий захід, щоб вирішити всю цю проблему. Перше, що я помітив у цьому, було використання команди.
Це функція DAX, яку я використовую не дуже часто, але вона ідеально підходить для такого типу проблем. Якщо ми подивимося на посібник із SQL BI DAX, там сказано, що функція GENERATE — це таблична функція, яка використовує дві різні таблиці як вхідні дані, а потім виконує еквівалент команди SQL CROSS APPLY.
Отже, він бере базову таблицю (Table1) і повторює її, а потім бере другий табличний вираз і обчислює його для кожного рядка в першій таблиці, а потім повертається до таблиці як результат.
Візьмемо Антриксову мірку та кинемо її в стіл. Ми бачимо, що воно дає ті самі результати, що й рішення power query, яке ми робили минулого разу. Тож це добре і добре підтверджує обидва показники.
Давайте розберемо цей захід. Перший фільтр, застосований тут, – це Дати[РобочийДень] = ІСТИНА. Це видаляє всі невихідні та несвяткові дати на основі поля IsBusinessDay розширеної таблиці дат.
Ми говоримо про це набагато більше в , де ми також розповідали, як прив’язати це до нашого святкового столу.
Цікава частина цього насправді полягає у двох вхідних даних таблиці. Перша таблиця — це таблиця з одним стовпцем поля «Місяць і рік» у таблиці «Дата».
Але вхідні дані другої таблиці — це місце, де відбуваються цікаві речі. Antriksh використав a, а потім використав наш динамічний параметр як кількість рядків у TOPN.
Показник «Загальний обсяг продажів » додається до другої таблиці, а потім застосовується до першої таблиці.
Зміст
Розуміння складної міри за допомогою мови кодування DAX
Один із найпростіших способів з’ясувати, що робить така складна міра, як ця, — зайти в табличний редактор . Ми можемо поглянути на цей вираз і спочатку зрозуміти, що робить вираз TOPN.
Давайте скопіюємо частину TOPN і створимо нову. Пам’ятайте, що запити DAX починаються з EVALUATE.
Коли ми вставимо частину TOPN, ми побачимо, що це витягує перші 5 дат із таблиці замовлень на продаж. У TOPN є таблиця, яка складається зі значень усіх дат замовлень у таблиці продажів.
Ця функція TOPN приймає значення параметра «що-якщо» (у цьому випадку дорівнює 5) і застосовує його до поля дати замовлення на продаж. Потім він витягує перші 5 дат у контексті фільтра в порядку зростання на основі цього поля.
Оскільки немає додаткового контексту фільтра, ці перші 5 дат просто вилучаються з усієї таблиці.
Стовпець @Sales просто додає загальні продажі в межах відповідного контексту фільтра до таблиці TOPN.
Поки що ми маємо першу таблицю місяця та року, друга таблиця TOPN перших N датується таблицею продажів, а потім пов’язаний із нею загальний обсяг продажів.
Використання таблиці GENERATE мовою кодування DAX
Давайте подивимося, що робить ця таблиця GENERATE. Ми повернемося до редактора таблиць і створимо новий запит DAX.
Ми почнемо, як завжди, з EVALUATE, вставимо частину коду GENERATE і натиснемо 5.
Ми бачимо, що для кожного рядка першої таблиці відбувається ітерація та об’єднання з 5 рядками з таблиці TOPN, які обчислюються в контексті за допомогою функції @Sales.
Це зайняло перші 5 робочих днів квітня, перші 5 робочих днів травня, перші 5 робочих днів червня і так далі, поки не дійде до кінця першої таблиці.
Це саме те, що нам потрібно, і тепер додавати ці значення стає відносно просто. У нас є результат (який є змінною таблиці результатів GENERATE), а потім нам потрібно підсумувати функцію @Sales.
У контексті ми зараз підсумовуємо перші 5 робочих днів квітня, перші 5 робочих днів травня і так далі, поки не досягнемо загальної суми 23 737 430 дол. .
Це підсумовує весь стовпець @Sales і отримує точнісінько ту саму суму, яку ми мали в нашому рішенні Power Query.
Ви бачите, що якщо ми змінюємо роздільник на 10, ми динамічно отримуємо ті самі результати з мовою кодування DAX, що й у Power Query.
У нас також є гістограма внизу, яка динамічно коригується, щоб відобразити внесені зміни.
Динамічне налаштування назви такту
Є ще один додатковий прийом, який я хотів вам показати. Ви можете створити динамічне коригування свого параметра "що-якщо" та динамічно прив'язати його до назви міри.
Наприклад, якщо ми змінимо роздільник угорі на 15, це динамічно змінить назву показника внизу на Загальний обсяг продажів за перші 15 робочих днів кожного місяця .
У DAX є простий спосіб зробити це за допомогою . В основному ми беремо лише три струни. Перший — це загальний обсяг продажів для First , а потім об’єднуємо його зі значенням, отриманим із параметра «що-якщо», а потім просто прив’язуємо це до решти заголовка.
Потім переходимо до візуального елемента, переходимо до умовного форматування заголовка та натискаємо fx .
Ми відформатуємо за значенням поля та виберемо цю міру динамічного заголовка. Це змінить вибір параметра що-якщо.
Висновок
Зараз ми маємо повне рішення, що використовує мову кодування DAX. Ми обговорили дійсно творчий і ефективний спосіб зробити це за допомогою функції GENERATE. Я хочу подякувати Антрікшу за те, що він поділився з нами своїми блискучими знаннями про DAX. Я багато чого навчився, вивчаючи його рішення DAX, і, сподіваюся, ви теж дізналися.
У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора Power Query в LuckyTemplates.
Дізнайтеся, як об’єднати файли з кількох папок у мережі, робочому столі, OneDrive або SharePoint за допомогою Power Query.
Цей підручник пояснює, як обчислити місячне ковзне середнє на базі даних з початку року за допомогою функцій AVERAGEX, TOTALYTD та FILTER у LuckyTemplates.
Дізнайтеся, чому важлива спеціальна таблиця дат у LuckyTemplates, і вивчіть найшвидший і найефективніший спосіб це зробити.
У цьому короткому посібнику розповідається про функцію мобільних звітів LuckyTemplates. Я збираюся показати вам, як ви можете ефективно створювати звіти для мобільних пристроїв.
У цій презентації LuckyTemplates ми розглянемо звіти, що демонструють професійну аналітику послуг від фірми, яка має кілька контрактів і залучених клієнтів.
Ознайомтеся з основними оновленнями для Power Apps і Power Automate, а також їх перевагами та наслідками для Microsoft Power Platform.
Відкрийте для себе деякі поширені функції SQL, які ми можемо використовувати, наприклад String, Date і деякі розширені функції для обробки та маніпулювання даними.
У цьому підручнику ви дізнаєтеся, як створити свій ідеальний шаблон LuckyTemplates, налаштований відповідно до ваших потреб і вподобань.
У цьому блозі ми продемонструємо, як шарувати параметри поля з малими кратними, щоб створити неймовірно корисну інформацію та візуальні ефекти.