20 May 2024

Основні функції DAX

#Навчання #Power BI

DAX є ключовим інструментом для роботи з даними в Power BI, Power Pivot та Analysis Services (SQL Server). Вона дозволяє створювати складні обчислення та проводити аналіз, недоступний за допомогою стандартних функцій Excel. У цій статті ми розглянемо, для чого використовується DAX, які завдання вона вирішує та які основні функції вона має
Основні функції DAX

Що таке DAX?

DAX (Data Analysis Expressions) — це мова виразів, яка використовується для обчислень у моделях даних. Вона нагадує функції Excel, але надає більше можливостей для роботи з даними, особливо в контексті бізнес-аналізу. 

 

Для чого використовується DAX?

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

 

DAX дозволяє створювати нові обчислювані стовпці, міри (метрики) та складні фільтри.

Обчислювані стовпці: DAX дозволяє додавати нові стовпці в таблиці, які базуються на обчисленнях. Наприклад, можна створити стовпець “Загальний продаж", який буде сумою продажів по кожному рядку.

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

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


 

Основні функції DAX

Функції DAX можна розділити на кілька груп: 

  • функції зв'язків,

  • агрегатні функції,

  • логічні, 

  • функції фільтрації,

  • функції дати та часу,

  • фінансові,

  • інформаційні функції,

  • математичні,

  • статистичні та інші функції


 

Функції зв'язків

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

 

RELATED

Повертає значення з пов'язаної таблиці, яка знаходиться у зв'язку "один-до-багатьох".

Синтаксис: RELATED(<ColumnName>)

Приклад: ProductCategory = RELATED(Products[Category])

Функція RELATED отримує значення з колонки Category таблиці Products, яка пов'язана з поточною таблицею через відношення "один-до-багатьох". У цьому прикладі ми припускаємо, що існує зв'язок між таблицею продажів і таблицею продуктів.

 

RELATEDTABLE

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

Синтаксис: RELATEDTABLE(<TableName>)

Приклад: TotalSalesForCustomer = SUMX(RELATEDTABLE(Sales), Sales[Amount])

Функція RELATEDTABLE повертає всі рядки з таблиці Sales, які пов'язані з поточним рядком в основній таблиці, наприклад, з таблицею Customers. SUMX у цьому прикладі обчислює загальну суму Amount для всіх продажів, пов'язаних з поточним клієнтом.


 

Агрегатні функції

Агрегатні функції дозволяють обчислювати сумарні значення на основі певного стовпця або таблиці. 

 

SUM

Повертає суму всіх значень у стовпчику

Синтаксис: SUM(<ColumnName>)

Приклад: TotalRevenue = SUM(Sales[Revenue])

 

AVERAGE

Повертає середнє значення чисел у стовпчику

Синтаксис: AVERAGE(<ColumnName>)

Приклад: AverageRevenue = AVERAGE(Sales[Revenue])

 

MIN та MAX: 

Обчислюють мінімальне та максимальне значення відповідно.

Синтаксис: MAX(<ColumnName>), MIN(<ColumnName>)

Приклад: MinSale = MIN(Sales[Amount])

MIN повертає найменше значення з колонки Amount.

 

COUNT 

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

Синтаксис: COUNT(<ColumnName>)

Приклад: TotalSales = COUNT(Sales[OrderID])

Функція COUNT повертає кількість значень у  стовпчику OrderID.

 

DISTINCTCOUNT

Повертає кількість унікальних значень у стовпчику

Синтаксис: DISTINCTCOUNT(<ColumnName>)

Приклад: UniqueCustomers = DISTINCTCOUNT(Sales[CustomerID])

Функція DISTINCTCOUNT підраховує кількість унікальних значень у колонці CustomerID.

 

SUMX

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

Синтаксис: SUMX(<Table>, <Expression>)

Приклад: TotalProfit = SUMX(Sales, Sales[Quantity] * Sales[ProfitPerUnit])

 

AVERAGEX

Повертає середнє значення виразу, обчисленого для кожного рядка таблиці

Синтаксис: AVERAGEX(<Table>, <Expression>)

Приклад: AverageProfitPerSale = AVERAGEX(Sales, Sales[ProfitPerUnit] * Sales[Quantity])

Функція AVERAGEX обчислює вираз Sales[ProfitPerUnit] * Sales[Quantity] для кожного рядка таблиці Sales, а потім обчислює середнє значення цих результатів.


 

Логічні функції

Логічні функції використовуються для виконання умовних обчислень

 

IF

Повертає TRUE, якщо умова виконується

Синтаксис: IF(<Condition>, <TrueResult>, <FalseResult>)

Приклад: HighSales = IF(Sales[Amount] > 1000, "High", "Low")

Функція IF перевіряє, чи є значення у колонці Amount більшим за 1000, і повертає "High" або "Low" відповідно.

 

AND

Повертає TRUE, якщо всі умови істинні.

Синтаксис: AND(<Condition1>, <Condition2>)

Приклад: BigHighSales = IF(AND(Sales[Amount] > 1000, Sales[Quantity] > 10), "Big High", "Not Big High")

Функція AND перевіряє, чи є значення у колонці Amount більшим за 1000 та значення у колонці Quantity більшим за 10, і повертає "Big High" або "Not Big High".

 

OR

Повертає TRUE, якщо будь-яка з умов істинна.

Синтаксис: OR(<Condition1>, <Condition2>)

Приклад: PromotionEligible = IF(OR(Employee[YearsAtCompany] > 5, Employee[PerformanceRating] = "Excellent"), "Yes", "No")

Функція OR перевіряє, чи працює працівник понад 5 років або чи має він оцінку "Excellent", і повертає "Yes" або "No".

 

SWITCH:

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

Синтаксис: SWITCH(<Expression>, <Value1>, <Result1>, <Value2>, <Result2>, ..., <Else>)

Приклад:

SalesCategory = SWITCH(

   TRUE(),

   Sales[Amount] > 1000, "High",

   Sales[Amount] > 500, "Medium",

   "Low"

 

Якщо Sales[Amount] понад 1000, повертається "High".

Якщо Sales[Amount] понад 500, але менше або дорівнює 1000, повертається "Medium". Для всіх інших випадків повертається "Low


 

Функції фільтрації

Дозволяють відфільтрувати дані на основі заданих критеріїв.

 

CALCULATE

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

Синтаксис: CALCULATE(<Expression>, <Filter1>, <Filter2>, ...)

Приклад: TotalHighValueSales = CALCULATE(SUM(Sales[Amount]), Sales[Amount] > 1000)

Функція CALCULATE обчислює суму Amount тільки для тих рядків, де значення у колонці Amount понад 1000.

 

CALCULATETABLE

Змінює контекст обчислення таблиці на основі заданих фільтрів. Корисна для створення нових таблиць, які відповідають певним умовам.

Синтаксис: CALCULATETABLE(<Table>, <Filter1>, <Filter2>, ...)

Приклад: HighValueSalesTable = CALCULATETABLE(Sales, Sales[Amount] > 1000)

Функція CALCULATETABLE повертає таблицю Sales, яка містить лише ті рядки, де значення у колонці Amount понад 1000. 

 

FILTER

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

Синтаксис: FILTER(<Table>, <filter>)

Приклад: HighValueSales = FILTER(Sales, Sales[Amount] > 1000)

Функція FILTER повертає всі рядки з таблиці Sales, де значення у колонці Amount понад 1000.

 

ALL

Дозволяє контролювати рівень фільтрації у CALCULATE та інших обчисленнях, забезпечуючи повне ігнорування фільтрів. Вона корисна, коли потрібно отримати загальне значення без впливу поточного контексту фільтра

Синтаксис: ALL( [<table> | <column>[, <column>[, <column>[,…]]]] )

Приклад: TotalSalesWithoutFilters = CALCULATE(SUM(Sales[Amount]), ALL(Sales))

Функція ALL видаляє всі фільтри з таблиці Sales, а CALCULATE обчислює суму Amount з таблиці Sales, ігноруючи всі застосовані фільтри.

 

ALLEXCEPT

Видаляє всі фільтри з таблиці, окрім зазначених колонок.

Синтаксис: ALLEXCEPT(<Table>, <Column1>, <Column2>, ...)

Приклад:SalesExceptProduct = CALCULATE(SUM(Sales[Amount]), ALLEXCEPT(Sales, Sales[Product]))

Функція ALLEXCEPT видаляє всі фільтри з таблиці Sales, за винятком фільтрів, застосованих до колонки Product. У цьому прикладі CALCULATE обчислює суму Amount, залишаючи фільтри для Product активними, але при цьому видаляє інші фільтри.


 

Функції дати та часу

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

 

DAY

Повертає день місяця з дати (число від 1 до 31)

Синтаксис: DAY(<Date>)

Приклад: SalesDay = DAY(Sales[OrderDate])

 

DATESYTD

Повертає дати з початку року до поточної дати.

Синтаксис: DATESYTD(<DateColumn>)

Приклад: YTD_Sales = CALCULATE(SUM(Sales[Amount]), DATESYTD(Sales[OrderDate]))

Функція DATESYTD разом із CALCULATE обчислює річний обсяг продажів до зазначеної дати.

 

DATEDIFF

Повертає різницю між двома датами у зазначених одиницях часу 

Синтаксис: DATEDIFF(<StartDate>, <EndDate>, <Interval>)

Приклад: DaysBetween = DATEDIFF(Sales[OrderDate], Sales[ShipDate], DAY)

Функція DATEDIFF обчислює різницю між датами OrderDate та ShipDate у днях. Параметр Interval задає одиниці вимірювання часу і може бути DAY, MONTH, YEAR, HOUR, MINUTE або SECOND.


 

Текстові функції 

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

 

CONCATENATE

Об'єднує два текстових значення в одне.

Синтаксис: CONCATENATE(<Text1>, <Text2>)

Приклад: FullName = CONCATENATE(Employee[FirstName], Employee[LastName])

Функція CONCATENATE об'єднує прізвище та ім'я співробітників в один рядок

 

LEN

Повертає кількість символів у текстовому рядку.

Синтаксис: LEN(<Text>)

Приклад: NameLength = LEN(Employee[FirstName])


 

Як розпочати роботу з DAX?

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

 

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

 

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


 

Приєднуйтеся до нашого навчального курсу та ставайте гуру аналітики 

 

Дізнайтеся більше про повну програму "Поглиблена аналітика в Power BI"

 

 

 

 

 

Популярные статьи