Розвідка часу в DAX: як динамічно вибрати початковий період

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

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

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Зміст

Приклади сценаріїв аналізу часу в DAX

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

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

Розвідка часу в DAX: як динамічно вибрати початковий період

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

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

Розвідка часу в DAX: як динамічно вибрати початковий період

Використання зсувів для аналізу часу в DAX

Одна з речей, над якою ми працюватимемо, це компенсації . Зміщення в розширеній таблиці дат обчислюються динамічно. Щоразу, коли звіт оновлюється або відкривається, він проходить через код M. Наприклад, у місячному зміщенні він призначає поточному місяцю 0, попередньому місяцю -1, а двом попереднім місяцям -2. Заглядаючи в майбутнє, він призначає наступний місяць +1, а два місяці в майбутньому +2.

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

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

Впровадження стратегії «гумової качки» для аналізу часу в DAX

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

Розвідка часу в DAX: як динамічно вибрати початковий період

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

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

Збирання зсувів від дати початку

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

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

Розрахунок місячного діапазону

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

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

Розвідка часу в DAX: як динамічно вибрати початковий період

Розрахунок зсувів початкового та кінцевого місяця

Давайте подивимося на зміщення початкового місяця , обчисливши МАКСИМАЛЬНЕ зміщення. Ми видаляємо всі фільтри в таблиці дат і фільтруємо до вибраного місяця та року. Для кожного місяця має бути лише одне зміщення, яке відповідає цьому місяцю та року.

Розвідка часу в DAX: як динамічно вибрати початковий період

З цього моменту ми можемо взяти зміщення кінцевого місяця , яке є лише зміщенням початкового місяця + 11 місяців.

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Розвідка часу в DAX: як динамічно вибрати початковий період

Розрахунок тижневого діапазону

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

Розвідка часу в DAX: як динамічно вибрати початковий період

Але якщо ми натиснемо на інші роки в розділювачі року, ми побачимо 52-й тиждень, тоді як деякі мають 53-й тиждень, що створює багато проблем. З цього прикладу ви можете бачити, що проблема починає проявлятися.

У нас є початковий період 2020 року та 15 тиждень , але кінцевий період – 2021 рік та 13 тиждень замість 2021 року та 14 тижня .

Розвідка часу в DAX: як динамічно вибрати початковий період

Якщо ми повернемося до тижня 1, ми побачимо, що він починається добре, але закінчується на тижні 52. Якщо ми подивимося на розрахунок тижня 53 тут, максимальна кількість тижнів для 2020 і 2021 років становить 53 тижні. Це не спрацює для щотижневої деталізації.

Розвідка часу в DAX: як динамічно вибрати початковий період

Давайте подивимося, що ми можемо зробити, щоб це запрацювало. Нам потрібно виправити обчислення DAX прямо тут, у цій частині:

Розвідка часу в DAX: як динамічно вибрати початковий період

Це пов’язано з тим, що в деяких випадках 51 є правильним, якщо в році лише 52 тижні, але для року, де є 53 тижні, цей останній період буде виключено. Це саме те, що ми бачили в динамічному візуальному зображенні протягом тижнів, де обчислення видалило цей останній період у 2020 та 2021 роках.

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

Розвідка часу в DAX: як динамічно вибрати початковий період

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

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

Розвідка часу в DAX: як динамічно вибрати початковий період

Я придумав куленепробивний спосіб зробити це. Ви можете використовувати MIN, але доцільніше створити цей показник Week1 Offset . Щоб отримати зміщення тижня 1, ми маємо справу з тижнем 2, оскільки він ніколи не розділяється. Незалежно від того, 52 чи 53 тижні в році, 2 тиждень залишається незмінним.

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Щотижневий розрахунок у межах діапазону

А потім ми повертаємось до нашого щотижневого показника «В межах діапазону» та пишемо оператор IF, у якому, якщо кількість урожаю стосується тижня 1, ми обчислюємо зсув першого тижня. Якщо це не тиждень 1, ми просто обчислюємо зміщення початкового тижня, як і в попередньому місячному розрахунку.

Розвідка часу в DAX: як динамічно вибрати початковий період

І тоді зміщення наприкінці тижня буде зсувом на початку тижня + максимальне число тижня, яке може бути 52 або 53. Тоді ми просто віднімаємо 1, щоб не рахувати подвійне зсув на початку.

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Потім ми розмістимо щотижневий показник «У межах діапазону» на панелі фільтрів. Все перевірено та виглядає точно.

Розвідка часу в DAX: як динамічно вибрати початковий період

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

Висновок

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

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


Труба в R: підключення функцій за допомогою Dplyr

Труба в R: підключення функцій за допомогою Dplyr

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

RANKX Deep Dive: функція LuckyTemplates DAX

RANKX Deep Dive: функція LuckyTemplates DAX

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

Вилучення тем і зображень LuckyTemplates із PBIX

Вилучення тем і зображень LuckyTemplates із PBIX

Дізнайтеся, як розібрати файл PBIX, щоб витягти теми та зображення LuckyTemplates із фону та використовувати їх для створення звіту!

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Шпаргалка формул Excel: Посібник середнього рівня

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Календарна таблиця LuckyTemplates: що це таке та як ним користуватися

Python у LuckyTemplates: як встановити та налаштувати

Python у LuckyTemplates: як встановити та налаштувати

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

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

Розрахунок динамічної норми прибутку – легкий аналіз LuckyTemplates за допомогою DAX

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

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

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

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

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

Знайдіть свої найкращі продукти для кожного регіону в LuckyTemplates за допомогою DAX

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

Вимір сміття: що це таке і чому це щось інше, але не сміття

Вимір сміття: що це таке і чому це щось інше, але не сміття

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