Змініть формати дати за допомогою редактора Power Query
У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора Power Query в LuckyTemplates.
У цьому дописі в блозі ми розглянемо деякі неприємні проблеми з розпізнаванням часу, зокрема проблеми, спричинені деталізацію тижня, і проблеми, які можуть бути спричинені нерегулярною кількістю тижнів у році. Ми використовуватимемо зміщення, щоб отримати точні дані про час у DAX.
У нас сьогодні для вас є цікавий сценарій. Нещодавно це кілька разів згадувалося на форумі LuckyTemplates. Те, що люди хотіли зробити, це взяти візуал (яким може бути лінійний графік або гістограма) і динамічно змінювати його на дату початку. Ви можете переглянути повне відео цього підручника внизу цього блогу.
У цьому випадку ми використали той самий набір даних, що й для середньої спотової ціни за барель нафти . Замість того, щоб завжди починати на початку січня, ми хотіли мати можливість натиснути візуальне зображення, змінити його на іншу дату початку, але завжди показувати дані за один рік.
Зміст
Приклади сценаріїв аналізу часу в DAX
Є кілька причин, чому ви можете використовувати цю техніку. Ви можете використовувати це, якщо у вас є показник, який постійно коригується з точки зору способу його обчислення. Можливо, ви захочете показати лише дані за період переналаштування вперед.
Ще одна причина використовувати це, якщо ви хочете візуалізувати це в анімаційному вигляді. Це в основному візьме ваші дані та відобразить їх динамічно, коли ви натискаєте доступ до відтворення.
У цьому візуалі ми можемо змінювати дату початку місяць за місяцем, щоб показати, як вона змінюється протягом 12-місячного періоду з часом. Це цікавий і корисний візуал для різних бізнес-кейсів, але теоретично він також представляє ряд ключових питань, пов’язаних з DAX і моделюванням даних.
Давайте перейдемо до LuckyTemplates і спочатку розглянемо нашу модель даних. Це справді проста модель даних із розширеною таблицею дат і таблицею спотових цін , пов’язаною з датами.
Використання зсувів для аналізу часу в DAX
Одна з речей, над якою ми працюватимемо, це компенсації . Зміщення в розширеній таблиці дат обчислюються динамічно. Щоразу, коли звіт оновлюється або відкривається, він проходить через код M. Наприклад, у місячному зміщенні він призначає поточному місяцю 0, попередньому місяцю -1, а двом попереднім місяцям -2. Заглядаючи в майбутнє, він призначає наступний місяць +1, а два місяці в майбутньому +2.
Це проста концепція, але неймовірно потужна, коли ви маєте справу з аналізом часу в DAX і працюєте з місяцями , кварталами та тижнями . Якщо ви не використовуєте зміщення, іноді це значно ускладнює ваші обчислення.
Використання зсувів означає використання безперервного ряду чисел, де повернення на місяць назад завжди дорівнює -1, а перехід на місяць вперед завжди дорівнює +1, незалежно від того, де в році ви можете бути.
Впровадження стратегії «гумової качки» для аналізу часу в DAX
У минулому я вже говорив про гумове ухилення , тобто озвучення вашої стратегії вголос перед тим, як ви починаєте писати свій DAX.
Я думаю вголос, як я впораюся з цим у щомісячному контексті за допомогою аналізу часу в DAX. Я б почав щось на основі вибраного року та місяця та вибрав би ті, що використовують відключену таблицю, тому що, якщо ви подумаєте про це, кожен інший вибір передбачатиме схрещування років (за винятком січня).
Скажімо, ми хочемо 12 місяців, починаючи з березня, і ми отримаємо принаймні два місяці в наступному році. Якщо ми використовуємо підключений зріз, ми можемо фільтрувати лише цей рік і не зможемо фільтрувати наступний рік.
Збирання зсувів від дати початку
Давайте зробимо це за допомогою зв’язаної таблиці як для місяця, так і для року. По-перше, нам потрібно зібрати перше зміщення, яке стосується дати початку.
Потім ми хочемо пересунути це зміщення вперед на 12 місяців, а потім дивитися лише на дати, які входять до цього набору зсувів. Дозвольте мені показати вам, як це виглядає в DAX.
Розрахунок місячного діапазону
Це наша міра для Місячного діапазону , де ми вибираємо рік (який ми зібрали з відключеної таблиці років) і наш місяць (який ми зібрали з відключеної таблиці місяців).
У нас також є інший параметр, де, якщо не вибрано, за замовчуванням буде січень. Цей параметр призначений лише для налагодження.
Розрахунок зсувів початкового та кінцевого місяця
Давайте подивимося на зміщення початкового місяця , обчисливши МАКСИМАЛЬНЕ зміщення. Ми видаляємо всі фільтри в таблиці дат і фільтруємо до вибраного місяця та року. Для кожного місяця має бути лише одне зміщення, яке відповідає цьому місяцю та року.
З цього моменту ми можемо взяти зміщення кінцевого місяця , яке є лише зміщенням початкового місяця + 11 місяців.
Потім ми дивимося на кожну вибрану дату та визначаємо, чи потрапляє вона в початковий і кінцевий місяць. якщо він потрапляє в цей період, ми ставимо йому 1, а якщо ні, ми ставимо йому 0.
Якщо ми повернемося до перегляду за місяць у нашому візуалі, ми побачимо візуал «У межах діапазону» , який ми встановили рівним одиниці. Таким чином, він показує лише ті місяці від початку до кінця зміщення. Наприклад, якщо ми натиснемо лютий, ми побачимо від лютого до січня.
Розрахунок тижневого діапазону
Давайте подивимося, як це виглядає з тижневої точки зору. Візуальний вигляд спочатку починається добре і продовжується з тижня 1 до тижня 52. Поки що все добре.
Але якщо ми натиснемо на інші роки в розділювачі року, ми побачимо 52-й тиждень, тоді як деякі мають 53-й тиждень, що створює багато проблем. З цього прикладу ви можете бачити, що проблема починає проявлятися.
У нас є початковий період 2020 року та 15 тиждень , але кінцевий період – 2021 рік та 13 тиждень замість 2021 року та 14 тижня .
Якщо ми повернемося до тижня 1, ми побачимо, що він починається добре, але закінчується на тижні 52. Якщо ми подивимося на розрахунок тижня 53 тут, максимальна кількість тижнів для 2020 і 2021 років становить 53 тижні. Це не спрацює для щотижневої деталізації.
Давайте подивимося, що ми можемо зробити, щоб це запрацювало. Нам потрібно виправити обчислення DAX прямо тут, у цій частині:
Це пов’язано з тим, що в деяких випадках 51 є правильним, якщо в році лише 52 тижні, але для року, де є 53 тижні, цей останній період буде виключено. Це саме те, що ми бачили в динамічному візуальному зображенні протягом тижнів, де обчислення видалило цей останній період у 2020 та 2021 роках.
Щоб виправити це, ми переходимо до вимірювання щотижневої помилки в межах діапазону , яке насправді виглядає простішим, ніж попередній показник. У нас була початкова міра зміщення та обчислено максимальне зміщення. Потім ми позбавили фільтр дат, а потім наклали фільтр на вибраний тиждень і вибраний рік, припускаючи, що це призведе до правильного зміщення.
Але це не працює, тому що не має значення, використовуєте ви максимальне або мінімальне зміщення. Все, що ми робимо, це обгортаємо агрегатор, щоб не розміщувати голий стовпець у операторі CALCULATE.
Але якщо ми повернемося сюди до ISO WeekNumber , ми побачимо, що рік і номер тижня не визначають однозначно тижневий зсув у цьому першому періоді.
Я придумав куленепробивний спосіб зробити це. Ви можете використовувати MIN, але доцільніше створити цей показник Week1 Offset . Щоб отримати зміщення тижня 1, ми маємо справу з тижнем 2, оскільки він ніколи не розділяється. Незалежно від того, 52 чи 53 тижні в році, 2 тиждень залишається незмінним.
У цьому розрахунку ми фільтруємо до тижня 2, щоб отримати зміщення. А потім, коли ми отримуємо це зміщення за 2 тижні, ми просто віднімаємо одиницю з нього. Це однозначно дасть нам зміщення тижня 1. Це закінчується вирішенням нашої проблеми.
Щотижневий розрахунок у межах діапазону
А потім ми повертаємось до нашого щотижневого показника «В межах діапазону» та пишемо оператор IF, у якому, якщо кількість урожаю стосується тижня 1, ми обчислюємо зсув першого тижня. Якщо це не тиждень 1, ми просто обчислюємо зміщення початкового тижня, як і в попередньому місячному розрахунку.
І тоді зміщення наприкінці тижня буде зсувом на початку тижня + максимальне число тижня, яке може бути 52 або 53. Тоді ми просто віднімаємо 1, щоб не рахувати подвійне зсув на початку.
Ми можемо створити ту саму конструкцію, яку ми використовували для місячного діапазону для фільтрації тижнів, де все, що потрапляє між початковим і кінцевим зміщенням, отримує 1, а все, що не отримує 0.
Потім ми розмістимо щотижневий показник «У межах діапазону» на панелі фільтрів. Все перевірено та виглядає точно.
Ми можемо натиснути вісь відтворення та запустити деталізацію тижня. Ми бачимо, що він працює належним чином, як і в контексті місяця.
Висновок
Це досить глибоке занурення в інтелект часу в DAX, де ми обговорювали, як ми можемо вирішити деякі проблеми, пов’язані з числами тижнів. Сподіваюся, ви знайшли цей підручник корисним і надали вам деякі додаткові інструменти у вашому наборі інструментів, коли ви маєте справу з проблемною ситуацією тижня.
Якщо вам сподобався вміст, розглянутий у цьому посібнику, не забудьте підписатися на телеканал LuckyTemplates. У нас постійно надходить величезна кількість вмісту, створюваного мною та низкою творців контенту, які всі прагнуть покращити спосіб використання LuckyTemplates і Power Platform.
У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора 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, налаштований відповідно до ваших потреб і вподобань.
У цьому блозі ми продемонструємо, як шарувати параметри поля з малими кратними, щоб створити неймовірно корисну інформацію та візуальні ефекти.