Типы данных, поддерживаемые в табличных моделях

Применимо к: SQL Server Analysis Services Azure Analysis Services 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

Однако количество значащих цифр ограничено 17 знаками после запятой.
Логический Логический Значение True или False.
Текстовый Строковый Строка символьных данных в Юникоде. Это могут быть строки, числа или даты, представленные в текстовом формате.
Дата Дата и время Значения даты и времени в принятом представлении даты-времени.

Допустимый диапазон дат включает значения после 1 марта 1900г.
Валюта Валюта Тип данных "Валюта" включает значения в диапазоне от -922,337,203,685,477.5808 до 922,337,203,685,477.5807 с четырьмя десятичными знаками заданной точности.
Н/Д Пусто Тип данных с пустыми значениями в DAX представляет и заменяет пустые значения NULL в SQL. Пустое значение создается с помощью функции BLANK, а проверяется с помощью логической функции ISBLANK.

* При попытке импортировать данные с большими числовыми значениями импорт может завершиться со следующей ошибкой:

Ошибка базы данных в памяти: столбец " <column name> " <table name> таблицы "" содержит значение "7976931348623157E e + 308", которое не поддерживается. Операция отменена.

Эта ошибка возникла из-за того, что конструктор моделей использует это значение для представления значений NULL. В следующем списке описаны значения, которые являются синонимами ранее упомянутого значения NULL:

Значение
9223372036854775807
-9223372036854775808
1,7976931348623158e+308
2,2250738585072014e-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 ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО Дата и время
Дата и время Дата и время Дата и время Дата и время Дата и время

Например, если вещественное число используется в операции сложения в сочетании со значением денежной единицы, оба этих значения преобразуются в вещественный тип, а результат также возвращается в вещественного числа.

Вычитание (-)

В следующей таблице заголовок строки является minuend (слева), а заголовок столбца — subtrahend (правая часть):

ЦЕЛОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО Дата и время
INTEGER ЦЕЛОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО
CURRENCY CURRENCY ДЕНЕЖНАЯ ЕДИНИЦА ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО
REAL ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО
Дата и время Дата и время Дата и время Дата и время Дата и время

Например, если дата используется в операции вычитания с любым другим типом данных, оба значения преобразуются в даты, а возвращаемое значение также является датой.

Примечание

Табличные модели поддерживают также унарный оператор «-» (отрицание), однако этот оператор не изменяет тип данных операнда.

Умножение (*)

ЦЕЛОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО Дата и время
INTEGER ЦЕЛОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО ЦЕЛОЕ ЧИСЛО
CURRENCY ДЕНЕЖНАЯ ЕДИНИЦА ВЕЩЕСТВЕННОЕ ЧИСЛО CURRENCY ДЕНЕЖНАЯ ЕДИНИЦА
REAL ВЕЩЕСТВЕННОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО

Например, если целое число используется вместе с вещественным числом в операции умножения, оба числа преобразуются в вещественный тип, а возвращаемое значение также является вещественным числом.

Деление (/)

В следующей таблице заголовок строки является числителем, а заголовок столбца — знаменателем: (строка или столбец)

ЦЕЛОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО Дата и время
INTEGER ВЕЩЕСТВЕННОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО ВЕЩЕСТВЕННОЕ ЧИСЛО
CURRENCY ДЕНЕЖНАЯ ЕДИНИЦА ВЕЩЕСТВЕННОЕ ЧИСЛО CURRENCY ВЕЩЕСТВЕННОЕ ЧИСЛО
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, посвященных соответствующим функциям.