Типы данных, поддерживаемые в табличных моделях
Применимо к: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
В этом разделе описаны типы данных, которые можно использовать в табличных моделях, и рассматривается неявное преобразование типов данных, выполняемое при вычислении данных или их использовании в формуле выражения анализа данных (DAX).
Типы данных, используемые в табличных моделях
При импорте данных или использовании значения в формуле, даже если исходный источник данных содержит другой тип данных, данные преобразуются в один из следующих типов. Эти типы данных также используются для значений, являющихся результатами вычисления формул.
В целом такие типы данных реализованы для поддержки точных вычислений в вычисляемых столбцах, а в целях обеспечения согласованности такие же ограничения применяются к остальным данным в моделях.
Форматы, используемые для чисел, валюты, значений даты и времени должны соответствовать формату локали, указанному на клиенте, используемом для работы с данными модели. Для управления отображением значения используются параметры форматирования в модели.
Тип данных в модели | Тип данных в DAX | Описание |
---|---|---|
Whole Number | 64-разрядное (8-байтовое) целочисленное значение* Примечание. В формулах DAX не поддерживаются типы данных, которые слишком малы для хранения минимального значения, указанного в описании. |
Числа без десятичных разрядов. Целые числа могут быть положительными или отрицательными числами, но должны быть целыми числами от -9 223 372 036 854 775 807 (-2^63+1) до 9 223 372 036 854 775 806 (2^63-2). |
Десятичное число | 64-разрядное (8 байтовое) вещественное число * Примечание. В формулах DAX не поддерживаются типы данных, которые слишком малы для хранения минимального значения, указанного в описании. |
Вещественные числа — это числа, которые могут иметь знаки после запятой. Вещественные числа включают широкий диапазон значений. Отрицательные числа от -1.79E +308 до -2.23E -308 Нуль Положительные числа от 2.23E -308 до 1.79E + 308 Однако количество значащих цифр ограничено 15 знаками после запятой. |
Логический | Логический | Значение True или False. |
Текстовый | Строковый | Строка символьных данных в Юникоде. Это могут быть строки, числа или даты, представленные в текстовом формате. |
Дата | Дата и время | Значения даты и времени в принятом представлении даты-времени. Допустимый диапазон дат включает значения после 1 марта 1900г. |
Валюта | Валюта | Тип данных Currency допускает значения от -922 337 203 685 477,5807 до 922 337 203 685 477,5806 с четырьмя десятичными цифрами фиксированной точности. |
Недоступно | Пусто | Тип данных с пустыми значениями в DAX представляет и заменяет пустые значения NULL в SQL. Пустое значение создается с помощью функции BLANK, а проверяется с помощью логической функции ISBLANK. |
* При попытке импортировать данные с большими числовыми значениями импорт может завершиться ошибкой со следующей ошибкой:
Ошибка базы данных в памяти: столбец column< name> таблицы table<> содержит значение 1,7976931348623157e+308, которое не поддерживается. Операция отменена.
Эта ошибка возникла из-за того, что конструктор моделей использует это значение для представления значений NULL. В следующем списке описаны значения, которые являются синонимами ранее упомянутого значения NULL:
Значение |
---|
9223372036854775807 |
-9223372036854775808 |
1,7976931348623158e+308 |
-1,7976931348623158e+308 |
Удалите значение из данных и повторите попытку импорта.
Примечание
Невозможен импорт данных из столбца varchar(max) , который содержит строку длиной более 131 072 символов.
Тип табличных данных
Кроме того, в DAX используется тип данных table . Этот тип данных работает во многих функциях DAX, в том числе в агрегатах и в логике операций со временем. Некоторые функции требуют наличия ссылки на таблицу, иные возвращают таблицу, которую можно использовать в качестве входных данных для других функций. В некоторых функциях, требующих входные данные в виде таблицы, можно указать выражение, результатом вычисления которого является таблица; для некоторых функций необходима ссылка на базовую таблицу. Сведения о требованиях конкретных функций см. в разделе Справочник по функциям DAX.
Неявное и явное преобразование типов данных в формулах DAX
Каждая функция DAX предъявляет особые требования в отношении типов данных, которые используются в качестве входных и выходных данных. Например, некоторые функции требуют использовать целые числа для некоторых аргументов и даты для других; иные функции требуют использовать текст или таблицы.
Если данные в столбце, который вы указываете в качестве аргумента, несовместимы с типом данных, необходимым для функции, DAX во многих случаях возвращает ошибку. Однако везде, где это возможно, DAX пытается неявно преобразовать данные в требуемый тип данных. Пример:
Можно ввести число, например "123", в виде строки. DAX анализирует строку и пытается указать ее как числовой тип данных.
Вы можете добавить TRUE + 1 и получить результат 2, так как TRUE неявно преобразуется в число 1 и выполняется операция 1 + 1.
Если вы складываете значения в двух столбцах и одно значение представлено в виде текста ("12"), а другое в виде числа (12), DAX неявно преобразует строку в число и затем выполняет сложение для получения числового результата. Выражение = "22"+22 возвращает значение 44.
При попытке сцепить два числа они будут представлены в виде строк, а затем объединяются. Выражение = 12&34 возвращает значение "1234".
В следующей таблице представлены неявные преобразования типов данных, выполняемые в формулах. В целом конструктор семантических моделей работает аналогично Microsoft Excel, по возможности выполняя неявные преобразования всегда, где это необходимо для выполнения операции.
Таблица неявных преобразований данных
Тип выполняемого преобразования определяется оператором, который приводит необходимые значения перед выполнением запрошенной операции. В этих таблицах перечислены операторы и указано преобразование, выполняемое для каждого типа данных в столбце, когда он объединяется с типом данных из пересекающейся строки.
Примечание
Текстовые типы данных не включены в эти таблицы. Когда число представлено в текстовом формате, в некоторых случаях конструктор моделей пытается определить тип числа и представить его в виде числа.
Сложение (+)
ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время | |
---|---|---|---|---|
INTEGER | ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время |
CURRENCY | CURRENCY | ДЕНЕЖНАЯ ЕДИНИЦА | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время |
REAL | real | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время |
Дата и время | Дата и время | Дата и время | Дата и время | Дата и время |
Например, если вещественное число используется в операции сложения в сочетании со значением денежной единицы, оба этих значения преобразуются в вещественный тип, а результат также возвращается в вещественного числа.
Вычитание (-)
В следующей таблице заголовок строки — это minuend (слева), а заголовок столбца — подтравенд (справа):
ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время | |
---|---|---|---|---|
INTEGER | ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
CURRENCY | CURRENCY | ДЕНЕЖНАЯ ЕДИНИЦА | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
REAL | real | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
Дата и время | Дата и время | Дата и время | Дата и время | Дата и время |
Например, если дата используется в операции вычитания с любым другим типом данных, оба значения преобразуются в даты, а возвращаемое значение также является датой.
Примечание
Табличные модели поддерживают также унарный оператор «-» (отрицание), однако этот оператор не изменяет тип данных операнда.
Умножение (*)
ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время | |
---|---|---|---|---|
INTEGER | ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | ЦЕЛОЕ ЧИСЛО |
CURRENCY | ДЕНЕЖНАЯ ЕДИНИЦА | ВЕЩЕСТВЕННОЕ ЧИСЛО | CURRENCY | ДЕНЕЖНАЯ ЕДИНИЦА |
REAL | ВЕЩЕСТВЕННОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
Например, если целое число используется вместе с вещественным числом в операции умножения, оба числа преобразуются в вещественный тип, а возвращаемое значение также является вещественным числом.
Деление (/)
В следующей таблице заголовок строки является числителем, а заголовок столбца — знаменателем: (Строка/Столбец)
ЦЕЛОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | Дата и время | |
---|---|---|---|---|
INTEGER | ВЕЩЕСТВЕННОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
CURRENCY | ДЕНЕЖНАЯ ЕДИНИЦА | ВЕЩЕСТВЕННОЕ ЧИСЛО | CURRENCY | ВЕЩЕСТВЕННОЕ ЧИСЛО |
REAL | real | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
Дата и время | real | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО | ВЕЩЕСТВЕННОЕ ЧИСЛО |
Например, если целое число используется вместе со значением денежной единицы в операции деления, оба значения преобразуются в вещественный тип, а результат также является вещественным числом.
Операторы сравнения
Для операций сравнения поддерживается только ограниченный набор сочетаний смешанных типов данных. Дополнительные сведения см. в статье Справочник по операторам DAX.
Обработка пустых значений, пустых строк и нулевых значений
В следующей таблице перечислены различия между DAX и Microsoft Excel в том, как обрабатываются пробелы.
Выражение | DAX | Excel |
---|---|---|
BLANK + BLANK | BLANK | 0 (ноль) |
BLANK +5 | 5 | 5 |
BLANK * 5 | BLANK | 0 (ноль) |
5/BLANK | Бесконечность | Ошибка |
0/BLANK | Не число | Ошибка |
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, посвященных соответствующим функциям.