Цей короткий посібник призначено для користувачів, які не Power Pivot у програмі Excel або проекти табличних моделей, створених у засобах sql Server Data Tools. Він дає змогу швидко й легко ознайомлюватися з тим, як за допомогою виразів аналізу даних (DAX) вирішити низку основних проблем із моделюванням даних і аналітичними проблемами. У цій статті містяться концептуальні відомості, низка завдань, які можна виконати, і кілька тестів, які допоможуть перевірити свої знання. Після завершення цієї теми ви повинні добре зрозуміти основні основні поняття в DAX.
Що таке DAX?
DAX – це набір функцій, операторів і констант, які можна використовувати у формулі або виразі для обчислення та повернення одного або кількох значень. Простіше кажучи, DAX допомагає створювати нові відомості з даних, уже наявних у вашій моделі.
Чому DAX настільки важливий?
Можна легко створити книгу та імпортувати до неї деякі дані. Ви навіть можете створювати зведені таблиці або зведені діаграми, які відображають важливу інформацію, не використовуючи формули DAX. Але що робити, якщо потрібно проаналізувати критично важливі дані про збут у кількох категоріях продуктів і для різних діапазонів дат? Або потрібно об'єднати важливі дані про запаси з кількох таблиць у різних джерелах даних? Формули DAX забезпечують цю можливість і багато інших важливих можливостей. Дізнайтеся, як створювати ефективні формули DAX, щоб максимально ефективно використовувати дані. Отримавши потрібну інформацію, ви можете почати вирішувати реальні бізнес-проблеми, які впливають на нижню лінію. Це бізнес-аналітика, і DAX допоможе вам туди потрапити.
Попередні вимоги
Можливо, ви вже знайомі зі створенням формул у програмі Microsoft Excel. Ці знання допоможуть зрозуміти DAX, але навіть якщо у вас немає досвіду роботи з формулами Excel, описані тут поняття допоможуть одразу почати створювати формули DAX і вирішувати реальні проблеми бізнес-аналітики.
Ми зосередимося на формулах DAX, які використовуються в обчисленнях. Ви вже маєте ознайомитися з основними поняттями обчислюваних стовпців і мір (також відомих як обчислювані поля), обидві з яких описано в Power Pivot довідці. Вам також слід ознайомитися з Power Pivot в середовищі створення та інструментах Excel.
Приклад книги
Найкращий спосіб вивчити DAX – створити основні формули, використати їх із фактичними даними та самостійно переглянути результати. У наведених тут прикладах і завданнях використовується книга Formulas.xlsx Formulas.xlsx Contoso Sample DAX. Книгу можна завантажити з http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Завантаживши книгу на комп'ютер, відкрийте її, а потім відкрийте вікно Power Pivot.
Почнемо!
Ми обрамимо DAX навколо трьох дуже важливих фундаментальних концепцій: синтаксис, функції та контекст. Звичайно, є й інші важливі поняття в DAX, але розуміння цих трьох концепцій забезпечить найкращий фундамент для побудови своїх навичок DAX.
Синтаксис
Перш ніж створювати власні формули, розгляньмо синтаксис формули DAX. Синтаксис включає різні елементи, які складають формулу, або, простіше кажучи, спосіб написання формули. Наприклад, розгляньмо просту формулу DAX, яка використовується для створення нових даних (значень) для кожного рядка в обчислюваному стовпці з іменем Margin у таблиці FactSales: (кольори тексту формули призначені лише для ілюстрації)
Синтаксис цієї формули містить такі елементи:
-
Оператор знака рівності (=) позначає початок формули, і коли ця формула обчислюється, вона повертає результат або значення. Усі формули, які обчислюють значення, починаються зі знака рівності.
-
Стовпець [SalesAmount] містить значення, від які потрібно відняти. Посилання на стовпець у формулі завжди оточено квадратними дужками []. На відміну від формул Excel, які посилаються на клітинку, формула DAX завжди посилається на стовпець.
-
Математичний оператор віднімання (-).
-
Стовпець [Загальна вартість] містить значення, які потрібно відняти від значень у стовпці [SalesAmount].
Коли ви намагаєтеся зрозуміти, як читати формулу DAX, часто корисно розбивати кожен елемент на мову, про які ви думаєте, і говорити щодня. Наприклад, цю формулу можна прочитати так:
У таблиці FactSales для кожного рядка в обчислюваному стовпці Margin обчислює (=) значення, віднімаючи (-) значення в стовпці [Загальна вартість] від значень у стовпці [SalesAmount].
Розгляньмо інший тип формули, який використовується в мірі:
Ця формула містить такі синтаксичні елементи:
-
Ім'я міри Сума обсягу збуту. Формули для мір можуть містити ім'я міри, а потім двокрапку, а потім формулу обчислення.
-
Оператор знака рівності (=) позначає початок формули обчислення. Під час обчислення повертається результат.
-
Функція SUM додає всі числа в стовпці [SalesAmount]. Ви дізнаєтеся більше про функції пізніше.
-
Дужки () оточують один або кілька аргументів. Для всіх функцій потрібен принаймні один аргумент. Аргумент передає значення функції.
-
Таблиця FactSales, на яку посилаються.
-
Стовпець [SalesAmount] у таблиці FactSales. За допомогою цього аргументу функція SUM знає, у якому стовпці потрібно об'єднати функцію SUM.
Цю формулу можна прочитати так:
Для міри "Сума обсягу збуту" обчислити (=) суму значень у стовпці [ SalesAmount ] таблиці FactSales .
У разі розміщення в зоні розкривного списку значень у списку полів зведеної таблиці ця міра обчислює та повертає значення, визначені кожною клітинкою зведеної таблиці, наприклад "Мобільні телефони" в США.
Зверніть увагу, що ця формула відрізняється від формули, яка використовується для обчислюваного стовпця "Поле". Зокрема, ми ввели функцію SUM. Функції – це попередньо написані формули, які спрощують виконання складних обчислень і маніпуляцій із числами, датами, часом, текстом тощо. Ви дізнаєтеся більше про функції пізніше.
На відміну від обчислюваного стовпця Margin раніше, перед стовпцем [SalesAmount] передувала таблиця FactSales, до якої належить стовпець. Це повне ім'я стовпця, яке містить ім'я стовпця, яке передує імені таблиці. Для стовпців, на які посилається та сама таблиця, ім'я таблиці не обов'язково включати у формулу. Це може зробити довгі формули, які посилаються на багато стовпців коротшим і легше читати. Проте радимо завжди включати ім'я таблиці у формули мір, навіть якщо вони містяться в одній таблиці.
Примітка.: Якщо ім'я таблиці містить пробіли, зарезервовані ключові слова або заборонені символи, ім'я таблиці потрібно брати в одинарні лапки. Імена таблиць також слід брати в лапки, якщо ім'я містить будь-які символи за межами діапазону букв і цифр ANSI незалежно від того, чи підтримує локалізація набір символів.
Дуже важливо, щоб формули мали правильний синтаксис. У більшості випадків, якщо синтаксис неправильний, буде повернуто синтаксичну помилку. В інших випадках синтаксис може бути правильним, але повернуті значення можуть бути не тими, на які ви очікуєте. Power Pivot (і sql Server Data Tools) включає IntelliSense; функція, яка використовується для створення синтаксично правильних формул, допомагаючи вибирати правильні елементи.
Створимо просту формулу. Це завдання допоможе вам зрозуміти синтаксис формули та як функція IntelliSense у рядку формул може вам допомогти.
Завдання: створення простої формули для обчислюваного стовпця
-
Якщо вікно Power Pivot ще не відкрито, у програмі Excel на стрічці Power Pivot натисніть кнопку Power Pivot Вікно.
-
У вікні Power Pivot виберіть таблицю FactSales (вкладка).
-
Прокрутіть до найбільшого стовпця праворуч, а потім у заголовку стовпця натисніть кнопку Додати стовпець.
-
Клацніть у рядку формул у верхній частині вікна конструктора моделі.
Курсор з'явиться в рядку формул. У рядку формул можна ввести формулу для обчислюваного стовпця або обчислюваного поля.
Розгляньмо три кнопки ліворуч від рядка формул.
Коли курсор активний у рядку формул, ці три кнопки стають активними. Крайня ліва кнопка ( X) – це просто кнопка скасування. Перейдіть вперед і клацніть його. Курсор більше не відображатиметься в рядку формул, а кнопка скасувати та позначка більше не відображатимуться. Перейдіть вперед і знову клацніть у рядку формул. Кнопка "Скасувати" та кнопка "Позначка" знову з'являться. Це означає, що ви готові почати вводити формулу.
Кнопка "Позначити" – це кнопка "Перевірити формулу". Це не робить багато, доки ви не ввели формулу. Ми трохи повернемося до неї.
Натисніть кнопку Fx . З'явиться нове діалогове вікно; діалогове вікно Вставлення функції. Діалогове вікно Вставлення функції – це найпростіший спосіб почати вводити формулу DAX. Ми додамо функцію до формули, коли трохи пізніше створимо міру, але поки що додавати функцію до формули обчислюваного стовпця не потрібно. Закрийте діалогове вікно Вставлення функції.
-
У рядку формул введіть знак рівності =, а потім введіть відкривну квадратну дужку [. Відобразиться невелике вікно з усіма стовпцями в таблиці FactSales. Це IntelliSense в дії.
Оскільки обчислювані стовпці завжди створюються в активній таблиці, ім'я стовпця не має передувати імені таблиці. Прокрутіть униз і двічі клацніть елемент [Обсяг продажів]. Також можна прокрутити до потрібного імені стовпця, а потім натиснути клавішу Tab.
Курсор тепер активний праворуч від [Обсяг продажів].
-
Введіть пробіл, а потім введіть оператор віднімання – (знак мінус), а потім введіть ще один пробіл.
-
Тепер введіть ще одну відкриваючу дужку [. Цього разу виберіть стовпець [ReturnQuantity] і натисніть клавішу Enter.
Якщо з'явиться повідомлення про помилку, уважно перегляньте синтаксис. За потреби порівняйте її з формулою в обчислюваному стовпці Поля, описаному вище.
Коли ви натиснете клавішу Enter, щоб завершити формулу, слово Обчислення з'явиться в рядку стану в нижній частині вікна Power Pivot. Вона йде швидко, навіть якщо ви просто обчислите нові значення для більш ніж трьох мільйонів рядків.
-
Клацніть правою кнопкою миші заголовок стовпця та перейменуйте стовпець NetSales.
Ось і все. Ви щойно створили просту, але дуже потужну формулу DAX. Для кожного рядка в таблиці FactSales формула NetSales обчислює значення, віднімаючи значення в стовпці [ReturnQuantity] від значення в стовпці [Обсяг продажів]. Зверніть увагу, як ми щойно сказали "Для кожного рядка". Це уявлення про ще одну дуже важливу концепцію в DAX; контексту рядка. Докладніше про контекст рядків можна дізнатися пізніше.
Щось дуже важливе, що потрібно зрозуміти, вводячи оператор у формулу DAX, – це тип даних в аргументах, які ви використовуєте. Наприклад, якщо ввести таку формулу, = 1 & 2, повернуте значення буде текстовим значенням "12". Це відбувається тому, що оператор амперсанд (&) призначений для об'єднання тексту. DaX інтерпретує цю формулу, щоб прочитати: обчислити результат, взявши значення 1 як текст і додайте значення 2 як текст. Тепер, якщо ви ввели = 1 + 2, DAX читає цю формулу як: Обчислити результат, взявши числове значення 1 і додавши числове значення 2. Результат, звичайно, "3", числове значення. DaX обчислює результувані значення залежно від оператора у формулі, а не на основі типу даних стовпців, які використовуються в аргументі. Типи даних у DAX дуже важливі, але за межами області цього короткого посібника. Докладні відомості про типи даних і оператори у формулах DAX див. в статті Довідник ІЗ DAX (http://go.microsoft.com/fwlink/?LinkId=239769&clcid=0x409) у розділі Книги в Інтернеті.
Спробуємо інше. Цього разу ви створите міру, ввівши формулу та використовуючи функцію IntelliSense. Не хвилюйтеся, якщо ви не до кінця розумієте формулу. Важливо дізнатися, як створити формулу, використовуючи кілька елементів у правильному синтаксисі.
Завдання: створення формули міри
-
У таблиці FactSales клацніть будь-яку пусту клітинку в області обчислення. Це область пустих клітинок під таблицею у вікні Power Pivot.
-
У рядку формул введіть ім'я Попередній квартал Продаж:.
-
Введіть знак рівності = для початку формули обчислення.
-
Введіть кілька перших букв CAL, а потім двічі клацніть потрібну функцію. У цій формулі потрібно використовувати функцію CALCULATE .
-
Введіть відкривну дужку (щоб почати передавати аргументи функції CALCULATE.
Зверніть увагу: якщо ввести відкривну дужку, функція IntelliSense відобразить аргументи, необхідні для функції CALCULATE. Ви дізнаєтеся про аргументи трохи.
-
Введіть кілька перших букв таблиці FactSales , а потім у розкривному списку двічі клацніть FactSales[Sales].
-
Введіть кому (,), щоб указати перший фільтр, а потім введіть ПРЕ, а потім двічі клацніть функцію PREVIOUSQUARTER .
Якщо вибрати функцію PREVIOUSQUARTER, з'явиться ще одна відкривна дужка, яка вказує на те, що потрібен інший аргумент; на цей раз для функції PREVIOUSQUARTER.
-
Введіть кілька перших букв Dim і двічі клацніть DimDate[DateKey].
-
Закрийте обидва аргументи, які передаються функції PREVIOUSQUARTER, і функцію CALCULATE, ввівши дві закривні дужки )).
Тепер формула має виглядати так:
Попередній квартал продажів:=CALCULATE(FactSales[Продажі], PREVIOUSQUARTER(DimDate[DateKey]))
-
Натисніть кнопку "Перевірити формулу" в рядку формул, щоб перевірити формулу. Якщо з'явиться повідомлення про помилку, перевірте кожен елемент синтаксису.
Ти це зробив! Ви щойно створили міру за допомогою DAX, і це не просто. Ця формула обчислює загальний обсяг збуту за попередній квартал залежно від фільтрів, застосованих у зведеній таблиці або зведеній діаграмі.
Вас щойно ознайомили з кількома важливими аспектами формул DAX. По-перше, ця формула включала дві функції. Зверніть увагу, що функція PREVIOUSQUARTER вкладено як аргумент, що передається функції CALCULATE . Формули DAX можуть містити до 64 вкладених функцій. Навряд чи формула коли-небудь міститиме стільки вкладених функцій. Насправді така формула була б дуже важко створити і налагодити, і це, ймовірно, не було б дуже швидко або.
У цій формулі також використовуються фільтри. Фільтри звужують обчислювані елементи. У цьому випадку ви вибрали один фільтр як аргумент, який фактично є іншою функцією. Ви дізнаєтеся більше про фільтри пізніше.
Нарешті, ви використали функцію CALCULATE. Це одна з найпотужніших функцій DAX. Створюючи моделі даних і створюючи складніші формули, ви, швидше за все, використовуватимете цю функцію багато разів. Обговорення функції CALCULATE виходить за рамки цього короткого посібника, але в міру зростання ваших знань про DAX зверніть особливу увагу на цей короткий посібник.
Примітка.: Зазвичай, щоб використовувати функції часового аналізу у формулах DAX, потрібно вказати унікальний стовпець дат за допомогою діалогового вікна Позначити як таблицю дат. У книзі Samples.xlsx формул Contoso DAX стовпець DateKey в таблиці DimDate вибирається як унікальний стовпець дат.
Додатковий кредит
Ви можете запитати: "Що найпростіша формула DAX, яку я можу створити?" Ну, відповідь на це "формула, яку вам не потрібно". І це саме те, що можна зробити, використовуючи стандартну функцію агрегації в мірі. Майже будь-яка модель даних має фільтрувати й обчислюватися за агрегованих даних. Наприклад, функція SUM у мірі Сума обсягу продажів, яку ви бачили раніше, використовується для додавання всіх чисел у певному стовпці. DAX містить кілька інших функцій, які також агрегуються значеннями. За допомогою функції "Автосума" можна автоматично створювати формули за допомогою стандартних агрегацій.
Додаткове кредитне завдання: створення формули міри за допомогою функції "Автосума"
-
У таблиці FactSales прокрутіть до стовпця ReturnQuantity і клацніть заголовок стовпця, щоб виділити весь стовпець.
-
На вкладці Основне на стрічці в групі Обчислення натисніть кнопку Автосума .
Клацніть стрілку вниз поруч із кнопкою Автосума, а потім виберіть пункт Середнє (зверніть увагу на інші стандартні функції агрегації, які також можна використовувати).
Одразу створюється нова міра з іменем Average of ReturnQuantity: і формулою =AVERAGE([ReturnQuantity]).
Тепер це було не так просто? Звичайно, не всі формули, які ви створюєте, будуть настільки простими. Проте за допомогою функції "Автосума" можна створювати швидкі та прості формули, використовуючи стандартні обчислення агрегації.
Це має дати вам досить гарне розуміння синтаксису, який використовується у формулах DAX. Ви також познайомилися з деякими дійсно крутими функціями, такими як IntelliSense і AutoSum, які допомагають створювати швидкі, прості та точні формули. Звичайно, є набагато більше, ви можете дізнатися про синтаксис. Щоб дізнатися більше, варто ознайомитися з довідником DAX або SQL Books Online.
QuickQuiz синтаксису
-
Призначення цієї кнопки в рядку
формул -
Що завжди оточує ім'я стовпця у формулі DAX?
-
Як би ви написали формулу для такого:
У таблиці DimProduct для кожного рядка в обчислюваному стовпці UnitMargin обчислити значення, віднявши значення в стовпці UnitCost від значень у стовпці "Вартість одиниці товару "?
Відповіді наведено в кінці цієї статті.
Функції
Функції – це попередньо визначені формули, які виконують обчислення за допомогою певних значень, які називаються аргументами, у певному порядку або структурі. Аргументи можуть бути іншими функціями, іншою формулою, посиланнями на стовпці, числами, текстом, логічними значеннями, наприклад TRUE, FALSE або константами.
DaX містить такі категорії функцій: "Дата й час", "Відомості", "Логічні", "Математичні", "Статистичні", "Текст" і "Часовий аналіз". Якщо ви знайомі з функціями у формулах Excel, багато функцій у DAX з'являться схожими на вас; Проте функції DAX унікальні такими способами:
-
Функція DAX завжди посилається на повний стовпець або таблицю. Якщо потрібно використовувати лише певні значення з таблиці або стовпця, до формули можна додати фільтри.
-
Якщо потрібно настроїти обчислення на основі рядків, daX надає функції, які дають змогу використовувати поточне значення рядка або пов'язане значення як тип аргументу, для виконання обчислень, які залежать від контексту. Ви дізнаєтеся більше про контекст пізніше.
-
DaX містить багато функцій, які повертають таблицю, а не значення. Таблиця не відображається, але використовується для введення даних для інших функцій. Наприклад, можна отримати таблицю, а потім підрахувати окремі значення в ній або обчислити динамічні суми в фільтрованих таблицях або стовпцях.
-
DaX містить різноманітні функції часового аналізу. Ці функції дають змогу визначати або вибирати діапазони дат і виконувати динамічні обчислення на їх основі. Наприклад, можна порівняти суми в паралельних періодах.
Іноді важко дізнатися, які функції потрібно використовувати у формулі. Power Pivot та табличний конструктор моделей у засобах sql Server Data Tools включають функцію Вставлення функції – діалогове вікно, яке дає змогу вибирати функції за категоріями та стислий опис для кожної функції.
Створимо нову формулу, яка містить функцію, яку ви виберете за допомогою функції Вставлення функції:
Завдання: додавання функції до формули за допомогою функції Insert
-
У таблиці FactSales прокрутіть список до найбільшого правого стовпця, а потім у заголовку стовпця натисніть кнопку Додати стовпець.
-
У рядку формул введіть знак рівності =.
-
Натисніть кнопку Вставити функцію . Відкриється діалогове вікно Вставлення функції .
-
У діалоговому вікні Вставлення функції клацніть список Виберіть категорію . За замовчуванням вибрано параметр Усі , а всі функції в категорії Усі перелічено нижче. Це багато функцій, тому вам потрібно буде відфільтрувати функції, щоб спростити пошук потрібного типу функції.
-
Для цієї формули потрібно повернути деякі дані, які вже існують в іншій таблиці. Для цього потрібно використовувати функцію в категорії Фільтр. Перейдіть вперед і виберіть категорію Фільтр , а потім у розділі Виберіть функцію прокрутіть униз і двічі клацніть функцію RELATED. Натисніть кнопку OK , щоб закрити діалогове вікно Вставлення функції .
-
Скористайтеся функцією IntelliSense, щоб знайти та вибрати стовпець DimChannel[ChannelName].
-
Закрийте формулу та натисніть клавішу Enter.
-
Коли ви натиснете клавішу Enter, щоб завершити формулу, слово Обчислення з'явиться в рядку стану в нижній частині вікна Power Pivot. Тепер ви побачите, що щойно створили новий стовпець у таблиці FactSales із відомостями про канал із таблиці DimChannel.
-
Перейменуйте стовпець Канал.
Формула має виглядати так: =RELATED(DimChannel[ChannelName])
Ви щойно познайомилися з іншою дуже важливою функцією в DAX – функцією RELATED . Функція RELATED повертає значення з іншої таблиці. За умови, що існує зв'язок між поточною таблицею та таблицею зі значеннями, які потрібно отримати, можна використовувати функцію RELATED. Звичайно, функція RELATED має величезні можливості. У цьому випадку ви можете включити канал збуту для кожного продажу в таблиці FactSales. Тепер таблицю DimChannel можна приховати зі списку полів зведеної таблиці, щоб полегшити навігацію та переглянути лише найважливіші відомості. Як і функція CALCULATE, описана раніше, функція RELATED дуже важлива, і ви, швидше за все, використовуватимете її багато разів.
Як бачите, функції в DAX допомагають створювати дуже потужні формули. Ми дійсно тільки торкнулися основних функцій. Удосконалюйте свої навички DAX, ви створюватимете формули за допомогою багатьох різних функцій. Одне з найкращих місць для отримання докладних відомостей про всі функції DAX – це посилання на вирази аналізу даних (DAX).
QuickQuiz функції
-
На що завжди посилається функція?
-
Чи може формула містити кілька функцій?
-
Яку категорію функцій слід використовувати для об'єднання двох текстових рядків в один рядок?
Відповіді наведено в кінці цієї статті.
Контекст
Контекст – це одне з найважливіших понять DAX, які потрібно зрозуміти. Є два типи контексту в DAX; контекст рядків і контекст фільтра. Спочатку ми розглянемо контекст рядка.
Контекст рядка
Контекст рядка найлегше розглядати як поточний рядок. Наприклад, пам'ятаєте обчислюваний стовпець Margin, який ви бачили раніше, дізнавшись про синтаксис? Формула =[SalesAmount] – [TotalCost] обчислює значення в стовпці Margin для кожного рядка таблиці. Значення для кожного рядка обчислюються зі значень у двох інших стовпцях: [SalesAmount] і [TotalCost] в одному рядку. DaX може обчислити значення для кожного рядка в стовпці Margin, оскільки він має контекст: для кожного рядка потрібно значення в стовпці [TotalCost] і віднімає їх від значень у стовпці [SalesAmount].
У вибраній клітинці, показаній нижче, значення 49,54 грн у поточному рядку обчислено відніманням значення 51,54 грн у стовпці [Загальна вартість] від значення 101,08 грн у стовпці [SalesAmount].
Контекст рядків не лише застосовується до обчислюваних стовпців. Контекст рядка також застосовується щоразу, коли формула має функцію, яка застосовує фільтри для ідентифікації одного рядка в таблиці. Функція за своєю суттю застосує контекст рядка для кожного рядка таблиці, над яким вона фільтрується. Цей тип контексту рядків найчастіше застосовується до мір.
Контекст фільтра
Контекст фільтра трохи складніше зрозуміти, ніж контекст рядка. Ви можете найлегше вважати контекст фільтра таким чином: один або кілька фільтрів, застосованих в обчисленні, що визначає результат або значення.
Контекст фільтра не існує замість контексту рядка; він застосовується на додачу до контексту рядків. Наприклад, щоб додатково звузити значення, які потрібно включити в обчислення, можна застосувати контекст фільтра, який не тільки визначає контекст рядка, але й визначає лише певне значення (фільтр) у цьому контексті рядка.
Контекст фільтра легко відображається у зведених таблицях. Наприклад, якщо додати totalCost до області значення, а потім додати рік і регіон до рядка або стовпців, ви визначаєте контекст фільтра, який вибирає підмножину даних на основі певного року та регіону.
Чому контекст фільтра настільки важливий для DAX? Оскільки контекст фільтра можна найлегше застосувати, додавши підписи стовпців і рядків і роздільники до зведеної таблиці, контекст фільтра також можна застосувати до формули DAX, визначивши фільтр за допомогою таких функцій, як ALL, RELATED, FILTER, CALCULATE, by relationships, and by other measures and columns. Наприклад, розгляньмо наведену нижче формулу в мірі з назвою StoreSales:
Очевидно, що ця формула складніша за деякі інші формули, які ви бачили. Однак, щоб краще зрозуміти цю формулу, її можна розбити так само, як і з іншими формулами.
Ця формула містить такі синтаксичні елементи:
-
Назва міри StoreSales, а потім двокрапка :.
-
Оператор знака рівності (=) позначає початок формули.
-
Функція CALCULATE обчислює вираз як аргумент у контексті, який змінюється вказаними фільтрами.
-
Дужки () оточують один або кілька аргументів.
-
Міра [Продажі] в тій самій таблиці, що й вираз. Міра Збут має формулу =SUM(FactSales[SalesAmount]).
-
Кома (,) відокремлює кожен фільтр.
-
Стовпець, на який посилається стовпець і певне значення, DimChannel[ChannelName] ="Store", як фільтр.
Ця формула забезпечить лише значення збуту, визначені мірою "Збут" як фільтр, обчислюються лише для рядків у стовпці DimChannel[ChannelName] зі значенням "Store" як фільтр.
Як ви можете собі уявити, можливість визначити контекст фільтра у формулі має величезні та потужні можливості. Посилання лише на певне значення у зв'язаній таблиці – це лише один із таких прикладів. Не хвилюйтеся, якщо ви не повністю розумієте контекст відразу. Створюючи власні формули, ви краще розумітимете контекст і чому це так важливо в DAX.
QuickQuiz контексту
-
Що таке два типи контексту?
-
Що таке контекст фільтра?
-
Що таке контекст рядка?
Відповіді наведено в кінці цієї статті.
Зведення
Тепер, коли ви маєте базове розуміння найважливіших понять у DAX, можна почати створювати формули DAX для обчислюваних стовпців і мір самостійно. DAX дійсно може бути трохи складно дізнатися, але є багато ресурсів, доступних для вас. Прочитавши цю статтю кілька разів і поекспериментуючи з кількома власними формулами, ви можете дізнатися більше про інші поняття та формули DAX, які допоможуть вирішити власні бізнес-проблеми. Є багато ресурсів DAX, доступних у Power Pivot довідці, SQL Server Books Online, офіційних документах і блоґах як від корпорації Майкрософт, так і від провідних фахівців із бізнес-аналітики. Вікі-сайт центру ресурсів DAX (http://social.technet.microsoft.com/wiki/contents/articles/dax-resource-center.aspx) – це чудове місце для початку. Посилання на вирази аналізу даних (DAX) також є чудовим ресурсом. Обов'язково збережіть її в уподобаннях.
DaX у біломупапері табличної моделі бізнес-аналітики, доступний для завантаження (http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409) надає більш детальний опис понять, представлених тут, а також багатьох інших передових понять і формул. У цьому офіційному файлі також використовується той самий зразок Formulas.xlsx книги Contoso DAX.
QuickQuiz Answers
Синтаксис
-
Відкриття функції Вставлення.
-
Дужки [].
-
=[Вартість одиниці товару] – [Вартість одиниці товару]
Функції:
-
Таблиця та стовпець.
-
Так. Формула може містити до 64 вкладених функцій.
Контексті:
-
Контекст рядків і контекст фільтра.
-
Один або кілька фільтрів в обчисленні, яке визначає одне значення.
-
Поточний рядок.