Цей короткий посібник призначено для користувачів, які вперше працюють із надбудовою Power Pivot у програмі Excel або проектами табличних моделей, авторами яких є SQL Server Data Tools. Він призначений для того, щоб швидко та легко ознайомити вас із тим, як можна використовувати вирази аналізу даних (DAX) для вирішення низки базових проблем моделювання даних та аналітики. Ця тема містить концептуальну інформацію, низку завдань, які можна виконати, і кілька тестів для перевірки отриманого матеріалу. Після завершення цієї теми ви повинні добре розуміти основні фундаментальні концепції DAX.
Що таке DAX?
DAX – це колекція функцій, операторів і констант, які можна використовувати у формулі або виразі, щоб обчислювати й повертати одне або кілька значень. Простіше кажучи, DAX допомагає створювати нову інформацію з уже наявних у моделі даних.
Чому мова DAX така важлива?
Створити книгу та імпортувати до неї певні дані доволі просто. Можна навіть створювати зведені таблиці або зведені діаграми, які відображають важливу інформацію, не використовуючи формули DAX. Проте що робити, якщо потрібно проаналізувати критично важливі дані про продажі в кількох категоріях продуктів і за різні проміжки часу? Або вам потрібно об'єднати важливі дані інвентарного списку з кількох таблиць у різних джерелах даних? Формули DAX надають цю можливість, а також багато інших важливих можливостей. Дізнайтеся, як створювати ефективні формули DAX, щоб максимально ефективно використовувати дані. Коли ви отримаєте необхідну інформацію, ви зможете почати вирішувати реальні бізнес-проблеми, які впливають на ваш прибуток. Це і є Business Intelligence, і DAX допоможе вам у цьому.
Попередні вимоги
Можливо, ви вже знайомі зі створенням формул у програмі Microsoft Excel. Ці знання допоможуть зрозуміти формули DAX, але навіть якщо ви не маєте досвіду роботи з формулами Excel, описані тут поняття допоможуть одразу розпочати створення формул DAX і вирішення реальних проблем бізнес-аналітики.
Ми зосередимося саме на розумінні формул DAX, які використовуються в обчисленнях. Ви вже повинні бути знайомі з основними поняттями обчислюваних стовпців і мір (також відомих як обчислювані поля), які описано в довідці Power Pivot. Потрібно також знати, що таке середовище та засоби для роботи з надбудовою Power Pivot в Excel.
Приклад книги
Найкращий спосіб вивчити мову DAX – створити кілька базових формул, використовувати її з деякими фактичними даними та переглядати результати на власні очі. У наведених тут прикладах і завданнях використовується зразок книги DAX Formulas.xlsx компанії Contoso. Книгу можна завантажити за посиланням http://go.microsoft.com/fwlink/?LinkID=237472&clcid=0x409. Завантаживши книгу на комп'ютер, відкрийте її, а потім відкрийте вікно Power Pivot.
Почнемо!
Ми сформулюємо DAX навколо трьох дуже важливих фундаментальних понять: синтаксис, функції та контекст. Звичайно, в DAX є й інші важливі концепції, але розуміння цих трьох концепцій забезпечить найкращу основу для розвитку ваших навичок DAX.
Синтаксис
Перш ніж створювати власні формули, розгляньмо синтаксис формул DAX. Синтаксис включає різні елементи, з яких складається формула, або, простіше кажучи, спосіб її запису. Наприклад, розглянемо просту формулу DAX, яка використовується, щоб створити нові дані (значення) для кожного рядка в обчислюваному стовпці під назвою "Маржа" в таблиці FactSales: (кольори тексту формули використовуються лише для ілюстрації)
Синтаксис цієї формули включає такі елементи:
- Знак рівності (=) указує на початок формули, а коли формула обчислюється, він повертає результат або значення. Усі формули, які обчислюють значення, починаються зі знака рівності.
- Стовпець [Обсяг продажів], на який посилається формула, містить значення, від яких потрібно відняти значення. Посилання на стовпець у формулі завжди береться у квадратні дужки []. На відміну від формул Excel, які посилаються на клітинку, формула DAX завжди посилається на стовпець.
- Математичний оператор віднімання (-).
- Стовпець [TotalCost], на який посилається формула, містить значення, які потрібно відняти від значень стовпця [SalesAmount].
Намагаючись зрозуміти, як читати формулу DAX, часто корисно розділити кожен елемент на мову, якою ви думаєте та говорите щодня. Наприклад, цю формулу можна прочитати так:
У таблиці FactSales для кожного рядка в стовпці Margin calculation (обчислювана маржа) обчисліть (=) значення, віднявши (-) у стовпці [TotalCost] від значень у стовпці [SalesAmount].
Розглянемо інший тип формули, який використовується в мірі.
Ця формула містить такі елементи синтаксису:
- Ім'я міри "Сума обсягу продажів". Формули мір можуть містити назву міри, двокрапку, а потім формулу обчислення.
- Оператор знака рівності (=) указує на початок формули обчислення. Під час обчислення вона поверне результат.
- Функція SUM додає всі числа у стовпці [SalesAmount]. Більше про функції ви дізнаєтеся пізніше.
- Кругла дужка () оточує один або кілька аргументів. Усі функції потребують принаймні одного аргументу. Аргумент передає значення функції.
- Посилання на таблицю "ФактПродажі".
- Стовпець [SalesAmount] у таблиці FactSales. Завдяки цьому аргументу функція SUM визначає, у якому стовпці потрібно агрегувати суму SUM.
Цю формулу можна прочитати так:
Для одиниці виміру "Сума обсягу продажів" обчислити (=) СУМУ значень у стовпці [Обсяг_продажів] таблицітаблиці фактів.
Якщо цей показник поміщений у зону перетягування значень у списку полів зведеної таблиці, він обчислює та повертає значення, визначені кожною клітинкою зведеної таблиці, наприклад "Стільникові телефони" в США.
Зверніть увагу, що ця формула дещо відрізняється від формули, використаної для стовпця обчислюваного поля "Маржа". Зокрема, ми представили функцію SUM. Функції – це попередньо записані формули, які спрощують складні обчислення та маніпуляції з числами, датами, часом, текстом тощо. Більше про функції ви дізнаєтеся пізніше.
На відміну від попереднього стовпця обчислення маржі, стовпцю [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 в дії.
Оскільки обчислювані стовпці завжди створюються в активній таблиці, немає необхідності ставити перед іменем стовпця ім'я таблиці. Прокрутіть униз і двічі клацніть [SalesQuantity]. Крім того, можна прокрутити сторінку до потрібного стовпця й натиснути клавішу табуляції.
Курсор тепер активний праворуч від [SalesQuantity]. - Введіть пробіл, потім оператор віднімання - (знак мінус), а потім ще один пробіл.
- Тепер введіть іншу відкривну квадратну дужку [... Цього разу виділіть стовпець [ReturnQuantity] і натисніть клавішу Enter.
Якщо станеться помилка, уважно перегляньте синтаксис. За потреби порівняйте її з формулою в стовпці обчислюваного поля (Margin), описаному вище.
Коли ви натискаєте клавішу Enter, щоб завершити введення формули, слово "Обчислення" відображається в рядку стану в нижній частині вікна Power Pivot. Виконується швидко, навіть якщо ви щойно обчислили нові значення для понад трьох мільйонів рядків. - Клацніть правою кнопкою миші заголовок стовпця та перейменуйте стовпець на NetSales.
Ось і все. Ви щойно створили просту, але дуже потужну формулу DAX. Для кожного рядка таблиці FactSales формула NetSales обчислює значення, віднімаючи значення в стовпці [ReturnQuantity] від значення в стовпці [SalesQuantity]. Зверніть увагу, як ми щойно сказали "Для кожного рядка". Це проблиск ще однієї дуже важливої концепції в 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) в Books Online.
Давайте спробуємо інший. Цього разу ви створите міру за допомогою функції IntelliSense, введеної формули. Не хвилюйтеся занадто сильно, якщо ви не до кінця розумієте формулу. Тут важливо навчитися створювати формули з використанням кількох елементів разом із правильним синтаксисом.
Завдання: створення формули міри
- У таблиці FactSales клацніть будь-яку пусту клітинку в області обчислення. Це область пустих клітинок безпосередньо під таблицею у вікні Power Pivot.
- У рядку формул введіть назву "Продажі за попередній квартал:.
- Введіть знак рівності =, щоб почати обчислення формули.
- Введіть кілька початкових букв CAL і двічі клацніть потрібну функцію. У цій формулі потрібно використовувати функцію CALCULATE .
- Введіть відкривну дужку ( щоб почати аргументи, які потрібно передати функції CALCULATE.
Зверніть увагу: після введення лівої дужки функція IntelliSense відобразить аргументи, потрібні для функції CALCULATE. Про аргументи ви дізнаєтеся трохи згодом. - Введіть кілька початкових букв таблиці FactSales, а потім у розкривному списку двічі клацніть елемент FactSales[Продажі].
- Введіть кому (,), щоб указати перший фільтр, потім введіть PRE та двічі клацніть функцію PREVIOUSQUARTER .
Після вибору функції PREVIOUSQUARTER з'являється ще одна відкривна дужка, яка вказує, що потрібен ще один аргумент; цього разу для функції PREVIOUSQUARTER. - Введіть перші кілька букв Dim, а потім двічі клацніть елемент DimDate[DateKey].
- Закрийте аргумент, який передається функції PREVIOUSQUARTER, і функцію CALCULATE, ввівши дві закривні дужки )).
Тепер ваша формула повинна мати такий вигляд:
Продажі за попередній квартал:=CALCULATE(FactSales[Sales], PREVIOUSQUARTER(DimDate[DateKey])) - Натисніть кнопку "Перевірити формулу" в рядку формул, щоб перевірити формулу. Якщо відображається повідомлення про помилку, перевірте кожен елемент синтаксису.
Ви це зробили! Ви щойно створили міру за допомогою мови DAX, та ще й не просту. Формула обчислює загальний обсяг збуту за попередній квартал залежно від фільтрів, застосованих у зведеній таблиці або зведеній діаграмі.
Ви щойно ознайомилися з кількома важливими аспектами формул DAX. Спочатку ця формула містила дві функції. Зверніть увагу, що функцію PREVIOUSQUARTER вкладено як аргумент, переданий функції CALCULATE . Формули DAX можуть містити до 64 вкладених функцій. Малоймовірно, що формула коли-небудь міститиме стільки вкладених функцій. Насправді таку формулу було б дуже складно створювати та налагоджувати, до того ж вона була б не дуже швидкою.
У цій формулі також використано фільтри. Фільтри звужують коло обчислень. У цьому випадку ви вибрали один фільтр як аргумент, а насправді іншу функцію. Пізніше ви дізнаєтеся більше про фільтри.
Нарешті, ви скористалися функцією CALCULATE. Це одна з найпотужніших функцій у DAX. Коли ви створюєте моделі даних і створюєте складніші формули, ця функція може застосовуватися багато разів. Обговорення функції CALCULATE виходить за рамки цього короткого посібника, але в міру зростання ваших знань про DAX зверніть особливу увагу на цю функцію.
Примітка.
Зазвичай, щоб використовувати функції часового аналізу у формулах DAX, потрібно вказати унікальний стовпець дат у діалоговому вікні "Позначити як таблицю дати". У книзі Contoso DAX Formula Samples.xlsx стовпець DateKey в таблиці DimDate вибрано як унікальний стовпець дати.
Додатковий кредит
Можливо, у вас виникне запитання: "Яку найпростішу формулу DAX можна створити?". Що ж, відповіддю на це є «формула, яку вам не потрібно». Це саме те, що можна зробити, використовуючи стандартну функцію агрегування в мірі. Майже будь-яку модель даних потрібно фільтрувати й обчислювати на основі сукупних даних. Наприклад, функція SUM у вимірі "Сума обсягу продажів", яку ви бачили вище, використовується, щоб додати всі числа в певному стовпці. DAX також містить кілька інших функцій, які агрегують значення. За допомогою функції "Автосума" можна автоматично створити формули на основі стандартних агрегувань.
Додатковий кредит Завдання: створення формули міри за допомогою функції "Автосума"
- У таблиці FactSales прокрутіть до стовпця ReturnQuantity та клацніть заголовок стовпця, щоб вибрати весь стовпець.
- На вкладці "Основне " стрічки в групі "Обчислення " натисніть кнопку "Автосума ".
Клацніть стрілку вниз поруч із параметром "Автосума" та виберіть функцію "Середнє " (зверніть увагу також на інші стандартні функції агрегування, які можна використовувати).
Відразу ж створюється нова міра з іменем "Середнє значення ReturnQuantity", за якою слідує формула =AVERAGE([ReturnQuantity]).
Хіба це не просто? Звісно, не всі формули, які можна створити, будуть такими простими. Але функція "Автосума" дає змогу створювати швидкі та прості формули на основі стандартних обчислень агрегування.
Це має дати вам змогу краще розуміти синтаксис, який використовується у формулах DAX. Ви також познайомилися з деякими дійсно цікавими функціями, як-от IntelliSense та AutoSum, які допомагають створювати швидкі, прості й точні формули. Звичайно, про синтаксис можна дізнатися набагато більше. Корисно ознайомитися з DAX Reference або SQL Books Online.
Синтаксис QuickQuiz
- Для чого призначена кнопка в рядку формул?
- Що завжди супроводжує ім'я стовпця у формулі DAX?
- Як би ви написали формулу для наступного:
У таблиці DimProduct для кожного рядка в обчислюваному стовпці UnitMargin обчислити значення, віднявши значення в стовпці "Вартість_одиниці_товару" від значень у стовпці "Ціна_за_одиницю".
Відповіді наведено в кінці цієї статті.
Функції
Функції – це попередньо визначені формули, які виконують обчислення в особливому порядку за допомогою спеціальних значень, які називаються аргументами. Аргументами можуть виступати інші функції, інша формула, посилання на стовпці, числа, текст, логічні значення, наприклад TRUE (істина) або FALSE (хибність), або константи.
DAX містить такі категорії функцій: функції дати й часу, інформаційні, логічні, математичні, статистичні, текстові та часові функції. Якщо ви знайомі з функціями у формулах Excel, багато функцій DAX будуть схожі на вас; Проте функції DAX унікальні за такими ознаками:
- Функція DAX завжди посилається на цілий стовпець або таблицю. Якщо потрібно використовувати лише певні значення з таблиці або стовпця, до формули можна додати фільтри.
- Якщо вам потрібно налаштувати обчислення на основі кожного рядка, DAX надає функції, які дають змогу використовувати значення поточного рядка або пов'язане значення як своєрідний аргумент, щоб виконувати обчислення, що відрізняються залежно від контексту. Пізніше ви дізнаєтеся більше про контекст.
- DAX містить багато функцій, які повертають таблицю, а не значення. Таблиця не відображається, але використовується для введення даних в інші функції. Наприклад, можна отримати таблицю та підрахувати окремі значення в ній або обчислити динамічні суми у відфільтрованих таблицях чи стовпцях.
- DAX містить різноманітні функції часового аналізу. Ці функції дають змогу визначати або вибирати діапазони дат і виконувати динамічні обчислення на їх основі. Наприклад, можна порівняти суми за паралельні періоди.
Іноді важко зрозуміти, які функції потрібно використовувати у формулі. Надбудова Power Pivot і конструктор табличних моделей у програмі SQL Server Data Tools містять функцію вставлення функції – діалогове вікно, у якому можна вибрати функції за категоріями та надати короткий опис кожної функції.
Створімо нову формулу з функцією, яку потрібно вибрати, використовуючи функцію вставлення функції:
Завдання: додавання функції до формули за допомогою команди «Вставити функцію»
- У таблиці FactSales прокрутіть до крайнього правого стовпця, а потім у заголовку стовпця виберіть команду " Додати стовпець".
- У рядку формул введіть знак рівності, а потім – "=".
- Натисніть кнопку " Вставити функцію ".
button Відкриється діалогове вікно "Вставлення функції ". - У діалоговому вікні " Вставлення функції " клацніть список " Виберіть категорію ". За замовчуванням вибрано " Усі ", а нижче вказано всі функції в категорії " Усі ". Таких функцій дуже багато, тому їх слід відфільтрувати, щоб було простіше знайти потрібний тип функції.
- У цій формулі потрібно повернути деякі дані, які вже існують в іншій таблиці. Для цього потрібно скористатися функцією в категорії «Фільтр». Клацніть категорію фільтра , а потім у розділі Виберіть функцію прокрутіть униз і двічі клацніть функцію RELATED Натисніть кнопку "ОК", щоб закрити діалогове вікно " Вставлення функції ".
- За допомогою 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 існує два типи контексту; контекст рядка й контекст фільтра. Спочатку розглянемо контекст рядків.
Контекст рядка
Контекст рядка найпростіше уявити як поточний рядок. Наприклад, пам'ятайте обчислюваний стовпець "Маржа", який ви бачили раніше, коли вивчали синтаксис? Формула =[SalesAmount] – [TotalCost] обчислює значення в стовпці "Маржа" для кожного рядка таблиці. Значення для кожного рядка обчислюються на основі значень у двох інших стовпцях – [Обсяг_продажів] і [Підсумкова_вартість] – у тому ж рядку. Формули DAX можуть обчислювати значення кожного рядка в стовпці "Поля", оскільки мають контекст: Для кожного рядка вона віднімає значення зі стовпця [TotalCost] від значень у стовпці [SalesAmount].
У виділеній клітинці, показаній нижче, значення 49,54 грн у поточному рядку обчислено віднянням значення 51,54 $ у стовпці [TotalCost] від значення 101,08 $ у стовпці [SalesAmount].
Контекст рядка застосовується не лише до обчислюваних стовпців. Контекст рядка також застосовується тоді, коли у формулі є функція, яка застосовує фільтри для визначення окремого рядка таблиці. Функція за своєю суттю застосовуватиме контекст рядка до кожного рядка таблиці, до якого вона фільтрує. Цей тип контексту рядка найчастіше застосовується до мір.
Контекст фільтра
Контекст фільтра трохи складніший для розуміння, ніж контекст рядка. Найпростіше уявити контекст фільтра як: Один або кілька фільтрів, застосованих в обчисленні, що визначає результат або значення.
Контекст фільтра не існує замість контексту рядка; Скоріше, він застосовується не лише до контексту рядка. Наприклад, щоб додатково звузити коло значень, які потрібно включити в обчислення, можна застосувати контекст фільтра, який визначає не лише контекст рядка, але й певне значення (фільтр) у контексті цього рядка.
Контекст фільтра добре помітний у зведених таблицях. Наприклад, коли ви додаєте стовпці "Загальнівитрати" до області значень, а потім додаєте дані "Рік" і "Регіон" до рядка або стовпців, ви визначаєте контекст фільтра, який вибирає підмножину даних на основі вказаного року та регіону.
Чому контекст фільтра такий важливий для мови DAX? Хоча контекст фільтра найпростіше застосувати, додавши підписи стовпців і рядків і роздільники до зведеної таблиці, контекст фільтра також можна застосувати у формулі DAX, визначивши фільтр за допомогою функцій "ALL", "RELATED", "FILTER", "CALCULATE", "BY RELATIONS" та інших мір і стовпців. Наприклад, розгляньмо наведену нижче формулу в мірі StoreSales:
Очевидно, що ця формула складніша за деякі інші формули, які ви бачили. Однак, щоб краще зрозуміти цю формулу, ми можемо розбити її на частини, як і з іншими формулами.
Ця формула містить такі елементи синтаксису:
- Ім'я міри StoreSales із двокрапкою :.
- Знак рівності (=) указує на початок формули.
- Функція CALCULATE обчислює вираз як аргумент у контексті, зміненому вказаними фільтрами.
- Кругла дужка () оточує один або кілька аргументів.
- Міра [Продажі] в тій самій таблиці, що й вираз. Показник збуту має формулу =SUM(FactSales[SalesAmount]).
- Кожен фільтр розділено комою.
- Стовпець, на який посилається ця формула, і певне значення, DimChannel[ChannelName] ="Store", як фільтр.
Ця формула дає змогу обчислити лише значення продажів, визначені показником збуту як фільтр, лише для рядків у стовпці DimChannel[ChannelName] зі значенням "Store" як фільтр.
Як ви можете собі уявити, можливість визначати контекст фільтра у формулі має величезні та потужні можливості. Можливість посилатися лише на певне значення у зв'язаній таблиці – це лише один із таких прикладів. Не хвилюйтеся, якщо ви не до кінця зрозуміли контекст одразу. Створюючи власні формули, ви краще розумітимете контекст і принципи роботи DAX.
Context QuickQuiz
- Які є два типи контексту?
- Відомості про контекст фільтра
- Що таке контекст рядка?
Відповіді наведено в кінці цієї статті.
Зведення
Тепер, маючи загальне уявлення про найважливіші поняття DAX, ви можете самостійно почати створювати формули DAX для обчислюваних стовпців і мір. DAX справді може бути трохи складним для вивчення, але для вас доступно багато ресурсів. Прочитавши цю статтю кілька разів і поекспериментувавши з кількома власними формулами, ви зможете дізнатися більше про інші поняття та формули DAX, які можуть допомогти вирішити ваші власні бізнес-проблеми. У довідці Power Pivot, SQL Server книгах в Інтернеті, в технічних документах і блоґах від корпорації Майкрософт і провідних фахівців із бізнес-аналітики можна отримати багато ресурсів DAX. Вікі-центр ресурсів 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, який ви вже маєте.
Відповіді на швидкі тести
Синтаксис
- Відкриття функції вставлення функції.
- Квадратні дужки [].
- =[Вартість одиниці товару] – [Вартість одиниці товару]
Функції:
- Таблиця та стовпець.
- Так. Формула може містити до 64 вкладених функцій.
- Текстові функції.
Контекст:
- Контекст рядка та контекст фільтра.
- Один або кілька фільтрів в обчисленні, що визначає одне значення.
- Поточний рядок.