Представляємо групи обчислень

Групи обчислення - це нова функція в DAX, натхненна подібною функцією, доступною в MDX, відомою як обчислювані члени. Групи обчислення прості у використанні; однак правильне проектування моделі з групами обчислень може бути складним завданням, коли ви створюєте кілька груп обчислень або коли ви використовуєте елементи обчислення у вимірах.

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

Наша зразкова модель містить заходи для обчислення суми продажів, загальної вартості, націнки та загальної кількості проданих товарів за допомогою наступного коду DAX:

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

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

Усі попередні міри відрізняються лише базовим показником; всі вони застосовують однаковий контекст фільтру DATESYTD до різних базових вимірів. Було б чудово, якби розробник отримав можливість визначити більш загальний розрахунок, використовуючи заповнювач для міри:

Попередній код не є дійсним синтаксисом DAX, але він забезпечує дуже хороший опис того, що таке елементи обчислення. Ви можете прочитати попередній код так: Коли вам потрібно застосувати обчислення з початку року до міри, викликайте міру після застосування DATESYTD до стовпця Дата [Дата]. Ось що таке елемент обчислення: Елемент обчислення - це вираз DAX, що містить спеціальний заповнювач. Заповнювач замінюється міркою двигуном безпосередньо перед оцінкою результату. Іншими словами, пункт обчислення - це варіація виразу, яка може бути застосована до будь-якої міри.

Більше того, вам, ймовірно, знадобиться кілька обчислень інтелекту за часом. Дійсно, рік на сьогоднішній день, квартал на сьогоднішній день і той самий період минулого року - це всі розрахунки, які якимось чином належать до однієї групи розрахунків. Тому DAX пропонує елементи розрахунку та групи розрахунків. Група розрахунків - це сукупність елементів розрахунку, які зручно згруповані разом, оскільки вони є варіаціями однієї теми.

Продовжимо з псевдокодом DAX:

Як бачите, ми згрупували чотири обчислення, пов’язані з часом, у групу з назвою Інтелектуум часу. Лише у чотирьох рядках код визначає десятки різних мір, оскільки елементи обчислення застосовують їх варіацію до будь-якої міри в моделі. Таким чином, як тільки розробник створить новий показник, варіації CY, PY, QTD та YTD будуть доступні безкоштовно.

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

обчислень

Створення груп обчислень за допомогою табличного редактора

Табличний редактор - це перший інструмент, який дозволяє розробникам створювати групи обчислень. Оскільки для груп обчислень потрібна версія сумісності табличної моделі 1470, станом на червень 2019 року вони доступні лише в службах Analysis Services 2019 та Azure Analysis Services.

У табличному редакторі пункт меню Модель/Нова група розрахунків створює нову групу розрахунків, яка відображається у вигляді таблиці в моделі зі спеціальним значком. На наступному малюнку групу обчислень перейменовано в Time Intelligence.

Група обчислень - це спеціальна таблиця з одним стовпцем, яка за замовчуванням називається Атрибут у Табличному редакторі. У нашій зразковій моделі ми перейменували цей стовпець Time calc; тоді ми додали три елементи (З початку року, QTD, і СПОЛІЗНИЙ за той самий період минулого року) за допомогою пункту контекстного меню "Новий елемент обчислення", доступного правою кнопкою миші на стовпці "Розрахунок часу". Кожен елемент обчислення має вираз DAX.

Функція SELECTEDMEASURE - це реалізація DAX заповнювача, який ми використовували в попередньому псевдокоді DAX. Код DAX для кожного елемента розрахунку описаний у наступному коді. Коментар, що передує кожному виразу DAX, ідентифікує відповідний пункт обчислення:

З цим визначенням користувач бачить нову таблицю з назвою Time Intelligence зі стовпчиком Time calc, що містить три значення: З початку року, QTD, і СПОЛІЗНИЙ. Користувач може створити зріз для цього стовпця або використовувати його в рядках і стовпцях візуальних елементів, як якщо б це був справжній стовпець у моделі. Наприклад, коли користувач вибирає З початку року, двигун застосовує З початку року пункт розрахунку за будь-якою мірою, яка міститься у звіті. На наступному малюнку показана матриця, що містить міру Суми продажів. Оскільки слайсер вибирає З початку року варіації міри, наведені цифри є значеннями на рік.

Якщо для того самого звіту користувач вибирає СПОЛІЗНИЙ, результат буде дуже різним.

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

Групи обчислення можуть піти далі, ніж це. На початку цієї статті ми запровадили чотири різні показники: Сума продажів, Загальна вартість, Рентабельність та Кількість продажів. Було б надзвичайно приємно, якби користувач міг скористатися зрізом для того, щоб вибрати метрику для показу, а не лише розрахунок інтелекту часу, який застосовуватиметься. Ми хотіли б представити загальний звіт, який нарізає будь-яку з чотирьох метрик за місяцями та роками, дозволяючи користувачеві вибрати бажану метрику. Іншими словами, ми хочемо отримати звіт нижче.

У наведеному прикладі користувач переглядає суму націнки, використовуючи варіацію за рік до дати. Тим не менше, користувач може вибрати будь-яку комбінацію зрізів, пов'язаних з двома групами обчислення, Метрикою та Розрахунком часу.

Для того, щоб отримати цей звіт, ми створили додаткову групу обчислень з назвою Metric, яка включає в себе Сума продажів, Загальна вартість, Націнка, і Кількість продажів пункти розрахунку. Вираз для кожного елемента обчислення просто обчислює відповідну міру.

Коли в одній моделі даних є кілька груп обчислень, важливо визначити, в якому порядку вони повинні застосовуватися механізмом DAX. Властивість "Пріоритет" груп обчислень визначає порядок застосування: першою застосовуваною групою обчислення є та, що має більше значення. Для того, щоб отримати бажаний результат, ми збільшили властивість "Пріоритет" групи обчислення часової інтелекту до 10.

Як наслідок, механізм застосовує групу обчислення часової інтелекту перед групою обчислення Метрики, яка зберігає властивість Precedence за замовчуванням рівним нулю. Наступний код DAX включає визначення кожного елемента розрахунку в групі обчислення метрики:

Ці елементи розрахунку не є модифікаторами початкової міри. Натомість вони повністю замінюють початкову міру новою. Щоб отримати таку поведінку, ми пропустили посилання на SELECTEDMEASURE у виразі. ВИБРАНИЙ ВИМІР застосовується дуже часто в елементах розрахунку, але він не є обов’язковим.

Включення та виключення заходів із елементів розрахунку

Є сценарії, коли елемент обчислення реалізує варіацію, яка не має сенсу для всіх заходів. За замовчуванням елемент розрахунку застосовує свій вплив на всі показники. Тим не менше, розробник може захотіти обмежити, на які заходи впливає елемент розрахунку.

Можна записати умови в DAX, які аналізують поточний показник, що оцінюється в моделі, за допомогою ISSELECTEDMEASURE або SELECTEDMEASURENAME. Функція ISSELECTEDMEASURE повертає TRUE, якщо міра, що обчислюється SELECTEDMEASURE, включена до переліку мір, зазначених у аргументах. Наприклад, наступний код застосовує елемент обчислення до будь-якої міри, крім міри% маржі:

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

ISSELECTEDMEASURE є кращим за SELECTEDMEASURENAME з кількох причин:

  • Якщо ім'я міри неправильно написане, використовуючи порівняння з SELECTEDMEASURENAME, код DAX просто повертає FALSE, не викликаючи помилки.
  • Якщо ім'я міри неправильно написано за допомогою ISSELECTEDMEASURE, вираз не вдається з помилкою Недійсні вхідні аргументи для ISSELECTEDMEASURE .
  • Якщо міру перейменовано в моделі, усі вирази з використанням ISSELECTEDMEASURE автоматично перейменовані в редактор моделі (виправлення формули), тоді як рядки порівняно з SELECTEDMEASURENAME повинні бути оновлені вручну.

Функцію SELECTEDMEASURENAME слід враховувати, коли бізнес-логіка елемента обчислення повинна застосовувати перетворення на основі зовнішньої конфігурації. Наприклад, функція може бути корисною, коли є таблиця зі списком заходів, які повинні увімкнути поведінку в елементі обчислення, щоб модель мала зовнішню конфігурацію, яку можна змінити, не вимагаючи оновлення коду DAX.

Висновки

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

Повертає набір дат у році до останньої дати, видимої в контексті фільтра.

DATESYTD ([,]) ВИБРАНИЙ ВИМІР

Повертає міру, яка наразі оцінюється.

ВИБРАНИЙ ВИМІР () ВИБРАНИЙ ВИМІР

Повертає true, якщо зараз оцінюється одна із зазначених мір.

ВИБРАНИЙ ВИМІР ([, [,…]]) ВИБРАНИЙ ІЗМІРНИК

Повертає назву міри, яка наразі оцінюється.