У моделі даних кожен стовпець має пов'язаний тип даних, який визначає тип даних, які може містити стовпець: цілі числа, десяткові числа, текст, грошові дані, дати й час тощо. Тип даних також визначає, які види операцій можна проводити зі стовпцем, а також який об’єм пам’яті займає зберігання значень у стовпці.
Якщо використовується надбудова Power Pivot, можна змінити тип даних стовпця. Це може знадобитися, якщо стовпець дат імпортовано як рядок, але він має бути чимось іншим. Докладні відомості див. в статті Установлення типу даних стовпця в надбудові Power Pivot.
У цій статті
Зведення типів даних
У таблиці нижче наведено список типів даних, які підтримуються в моделі даних. Під час імпорту даних чи використання значення у формулі, навіть якщо джерело початкових даних містить інший тип даних, дані буде перетворено в один із цих типів даних. Ці типи даних також використовуються у значеннях, які є результатом формул.
| Тип даних у програмі Excel | Тип даних у формулах DAX | Опис |
|---|---|---|
| Ціле число | 64-розрядне (8-байтне) ціле значення 1, 2 | Числа без десяткових знаків. Цілими можуть бути додатні чи від’ємні числа, але це має бути ціле число від –9 223 372 036 854 775 808 (–2^63) до 9 223 372 036 854 775 807 (2^63–1). |
| Десяткове число | 64-розрядне (8-байтне) дійсне число 1, 2 | Дійсні числа – це числа, які можуть мати десяткові знаки. Дійсні числа охоплюють широкий діапазон значень: від’ємні значення від –1,79E +308 до –2,23E –308; нуль; додатні значення від 2,23E –308 до 1,79E + 308. Проте кількість значимих цифр обмежено до 15 десяткових розрядів. |
| TRUE/FALSE | Логічне значення | Значення True або False. |
| Текст | Рядок | Рядок символьних даних у Юнікоді. Це можуть бути рядки, числа або дати, представлені в текстовому форматі. Максимальна довжина рядка 268 435 456 символів Юнікод (256 мега-символів) або 536 870 912 байт. |
| Дата | Дата або час | Дати та час у прийнятному представленні дата-час. Допустимі дати – всі дати після 1 січня 1900 року. |
| Грошова одиниця | Грошова одиниця | Тип даних "Грошова одиниця" допускає значення від –922 337 203 685 477,5808 до 922 337 203 685 477,5807 із чотирма десятковими розрядами заданої точності. |
| Н/Д | Пусте значення | Пусті значення – це тип даних у формулах DAX, який представляє та замінює Null-значення SQL. Можна створити пусте значення за допомогою функції BLANK, а також перевірити на наявність пустих значень за допомогою логічної функції ISBLANK. |
1 Формули DAX не підтримують типи даних, менші за ті, що наведено в таблиці.
2 Якщо спробувати імпортувати дані з дуже великими числовими значеннями, імпорт може завершитися з наведеною нижче помилкою.
Помилка бази даних у пам'яті: стовпець "<ім'я> стовпця" таблиці "<ім'я> таблиці" містить значення "1,7976931348623157e+308", яке не підтримується. Операцію скасовано.
Ця помилка виникає через те, що надбудова Power Pivot використовує це значення для представлення null-значень. Значення в наведеному нижче списку – це синоніми Null-значення.
| Значення |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1,7976931348623158e+308 |
| 2,2250738585072014e–308 |
Вилучіть значення з даних і повторіть спробу імпорту.
Тип даних "Таблиця"
DaX використовує тип даних таблиці в багатьох функціях, наприклад агрегаціях і обчисленнях часового аналізу. Для деяких функцій потрібне посилання на таблицю; інші функції повертають таблицю, яку потім можна використовувати як вхідні дані для інших функцій. У деяких функціях, для яких потрібна таблиця як ввід, можна вказати вираз, який обчислюється в таблиці; для деяких функцій обов'язкове посилання на базову таблицю. Відомості про вимоги певних функцій див. в статті Довідник із функцій DAX.
Неявне та явне перетворення типу даних у формулах DAX
У кожної функції DAX є певні вимоги до типів даних, які використовуються як вхідні та вихідні дані. Наприклад, для кількох функцій потрібні цілі числа для одних аргументів і дати для інших; для інших функцій потрібен текст або таблиці.
Якщо дані в указаному як аргумент стовпці несумісні з типом даних, потрібним для функції, у більшості випадків формули DAX завершаться з помилкою. Однак за змоги формули DAX спробують неявно перетворити дані в потрібний тип даних. Наприклад:
- Можна ввести дату як рядок, а формули DAX проаналізують рядок і спробують привести його до одного з форматів дати й часу Windows.
- Можна виконати додавання TRUE + 1 і отримати результат 2, оскільки значення TRUE неявно перетворюється в число 1, а потім виконується операція 1+1.
- Якщо додати значення у два стовпця, а одне значення буде представлено як текст ("12"), а інше – як число (12), формули DAX неявно перетворять рядок у число, а потім виконають додавання для отримання числового результату. Наведений нижче вираз повертає значення 44: = "22" + 22.
- Якщо спробувати об’єднати два числа, у програмі Excel їх буде представлено як рядки, а потім об’єднано. Наведений нижче вираз повертає значення "1234": = 12 & 34.
У таблиці нижче підсумовано неявні перетворення типів даних, які виконуються у формулах. Програма Excel за змоги виконує неявні перетворення відповідно до вимог конкретної операції.
Таблиця неявних перетворень даних
Тип перетворення, що виконується, визначає оператор, який перетворює потрібні значення перед необхідною операцією. У цих таблицях наведено список операторів і вказано перетворення, яке виконується з кожним типом даних у стовпці, коли він у парі з типом даних у перехресному рядку.
Примітка.
У ці таблиці не включено текстові типи даних. Якщо число представлено як текстовий формат, у деяких випадках надбудова Power Pivot спробує визначити числовий тип і представити його як число.
Додавання (+)
| Оператор (+) | INTEGER | CURRENCY | REAL | Дата або час |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | Дата або час |
| CURRENCY | CURRENCY | CURRENCY | REAL | Дата або час |
| REAL | REAL | REAL | REAL | Дата або час |
| Дата або час | Дата або час | Дата або час | Дата або час | Дата або час |
Наприклад, якщо в операції додавання використовується дійсне число разом із даними грошової одиниці, обидва значення буде перетворено в тип REAL, а результат буде повернено як тип REAL.
Віднімання (–)
У таблиці нижче заголовок рядка – це зменшуване (ліворуч), а заголовок стовпця – це від’ємник (праворуч).
| Оператор (–) | INTEGER | CURRENCY | REAL | Дата або час |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Дата або час | Дата або час | Дата або час | Дата або час | Дата або час |
Наприклад, якщо в операції віднімання використовується дата з будь-яким іншим типом даних, обидва значення буде перетворено в дати, а повернуте значення також буде датою.
Примітка.
Моделі даних також підтримують унарний оператор, – (від’ємний), але цей оператор не змінює тип даних операнда.
Множення (*)
| Оператор (*) | INTEGER | CURRENCY | REAL | Дата або час |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| REAL | REAL | CURRENCY | REAL | REAL |
Наприклад, якщо в операції множення ціле число поєднано з дійсним, обидва числа буде перетворено в дійсні числа, а повернуте значення також матиме тип REAL.
Ділення (/)
У таблиці нижче заголовок рядка – це чисельник, а заголовок стовпця – знаменник.
| Оператор (/) (Рядок або стовпець) |
INTEGER | CURRENCY | REAL | Дата або час |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | REAL | CURRENCY | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Дата або час | REAL | REAL | REAL | REAL |
Наприклад, якщо в операції ділення ціле число поєднано зі значенням грошової одиниці, обидва значення буде перетворено в дійсні числа, а результат також буде дійсним числом.
Оператори порівняння
У виразах порівняння логічні значення вважаються більшими, ніж значення рядка, а значення рядка вважаються більшими, ніж числові значення або значення дати або часу; вважається, що числа та значення дати чи часу мають однаковий ранг. З логічними значеннями чи значеннями рядка не виконується жодних неявних перетворень; значення BLANK або пусті значення перетворюються на 0/""/false залежно від типу даних іншого значення, що порівнюється.
Наведені нижче вирази DAX ілюструють таку поведінку.
=IF(FALSE()>"істина";"Вираз істинний","Вираз хибний"); повертає значення "Вираз істинний"
=IF("12">12;"Вираз істинний";"Вираз хибний") повертає значення "Вираз істинний".
=IF("12"=12;"Вираз дійсний";"Вираз хибний") повертає значення "Вираз хибний".
Перетворення виконуються неявно для числових типів або типів дати чи часу, як описано в таблиці нижче.
| Оператор порівняння | INTEGER | CURRENCY | REAL | Дата або час |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Дата або час | REAL | REAL | REAL | Дата або час |
Обробка пустих рядків, пустих і нульових значень
У формулах DAX Null-значення, пусте значення, пуста клітинка чи відсутнє значення представлено одним новим типом значення – BLANK. Можна також створити пусті значення за допомогою функції BLANK або перевірити на наявність пустих значень за допомогою функції ISBLANK.
Те, як пусті значення оброблюються в операціях, таких як додавання чи об’єднання, залежить від окремої функції. У таблиці нижче підсумовано відмінності між формулами DAX і Microsoft Excel у тому, як оброблюються пусті дані.
| Вираз | DAX | Excel |
|---|---|---|
| BLANK + BLANK | BLANK | 0 (нуль) |
| BLANK +5 | 5 | 5 |
| BLANK * 5 | BLANK | 0 (нуль) |
| 5/BLANK | Нескінченність | Помилка |
| 0/BLANK | NaN | Помилка |
| BLANK/BLANK | BLANK | Помилка |
| FALSE АБО BLANK | FALSE | FALSE |
| FALSE І BLANK | FALSE | FALSE |
| TRUE АБО BLANK | TRUE | TRUE |
| TRUE ТА BLANK | FALSE | TRUE |
| BLANK АБО BLANK | BLANK | Помилка |
| BLANK І BLANK | BLANK | Помилка |
Докладніше про те, як певна функція або оператор обробляє пусті значення, див. окремі теми для кожної функції DAX у розділі Довідкові матеріали з функцій DAX.