В модели данных каждый столбец имеет связанный тип данных, который указывает тип данных, которые может содержать столбец: целые числа, десятичные числа, текст, денежные данные, даты и время и т. д. Тип данных также определяет, какие типы операций можно выполнять с столбцом и сколько памяти требуется для хранения значений в столбце.
Если вы используете надстройку Power Pivot, вы можете изменить тип данных столбца. Это может потребоваться, если столбец даты был импортирован в виде строки, но он должен быть чем-то другим. Дополнительные сведения см. в разделе Установка типа данных столбца в Power Pivot.
В этой статье
Сводка типов данных
В следующей таблице перечислены типы данных, поддерживаемые в модели данных. При импорте данных или использовании значения в формуле, даже если исходный источник данных содержит другой тип данных, данные преобразуются в один из этих типов данных. Значения, полученные из формул, также используют эти типы данных.
Тип данных в Excel |
Тип данных в DAX |
Описание |
---|---|---|
Целое число |
64-разрядное (восемь байтов) целое число 1, 2 |
Числа, не имеющие десятичных разрядов. Целые числа могут быть положительными или отрицательными числами, но должны быть целыми числами между -9 223 372 036 854 775 808 (-2^63) и 9 223 372 036 854 775 807 (2^63-1). |
Десятичное число |
64-битовое (восемь байт) реальное число 1, 2 |
Реальные числа — это числа, которые могут иметь десятичные разряды. Реальные числа охватывают широкий диапазон значений: Отрицательные значения от -1,79E +308 до -2,23E -308 Ноль Положительные значения от 2.23E -308 до 1.79E + 308 Однако число значимых цифр ограничено 15 десятичными цифрами. |
TRUE/FALSE |
логический |
Значение True или False. |
Text (Текст) |
String |
Строка данных символа Юникода. Могут быть строками, числами или датами, представленными в текстовом формате. Максимальная длина строки — 268 435 456 символов Юникода (256 мега-символов) или 536 870 912 байт. |
Дата |
Функции даты и времени |
Даты и время в принятом представлении даты и времени. Допустимые даты — это даты после 1 января 1900 года. |
Валюта |
Валюта |
Тип данных currency допускает значения от -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:
Value (Значение) |
|
---|---|
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()>"true", "Expression is true", "Expression is false"), возвращает значение "Expression is true"
=ЕСЛИ("12">12;"Выражение true", "Выражение имеет значение false"), возвращает значение "Выражение true".
=ЕСЛИ("12"=12;"Выражение имеет значение true", "Выражение имеет значение false"), возвращает значение "Expression is false"
Преобразования выполняются неявно для числовых типов или типов даты и времени, как описано в следующей таблице:
Оператор сравнения |
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 в том, как обрабатываются пустые.
Expression |
ДАКС |
Excel |
---|---|---|
BLANK + BLANK |
ПУСТОЙ |
0 (ноль) |
ПУСТО +5 |
5 |
5 |
ПУСТО * 5 |
ПУСТОЙ |
0 (ноль) |
5/ПУСТО |
Бесконечность |
Ошибка |
0/BLANK |
NaN |
Ошибка |
BLANK/BLANK |
ПУСТОЙ |
Ошибка |
FALSE ИЛИ ПУСТО |
ЛОЖЬ |
ЛОЖЬ |
FALSE И ПУСТО |
ЛОЖЬ |
ЛОЖЬ |
TRUE ИЛИ ПУСТО |
ИСТИНА |
ИСТИНА |
TRUE И ПУСТО |
ЛОЖЬ |
ИСТИНА |
ПУСТАЯ ИЛИ ПУСТАЯ |
ПУСТОЙ |
Ошибка |
ПУСТЫЕ И ПУСТЫЕ |
ПУСТОЙ |
Ошибка |
Дополнительные сведения о том, как определенная функция или оператор обрабатывает пробелы, см. в отдельных разделах для каждой функции DAX в разделе Справочник по функциям DAX.