Типы данных поддерживаются в табличных моделяхData types supported in tabular models

Область применения: ДаSQL Server Analysis Services ДаAzure Analysis ServicesAPPLIES TO: yesSQL Server Analysis Services yesAzure Analysis Services

В этом разделе описаны типы данных, которые можно использовать в табличных моделях, и рассматривается неявное преобразование типов данных, выполняемое при вычислении данных или их использовании в формуле выражения анализа данных (DAX).This article describes the data types that can be used in tabular models, and discusses the implicit conversion of data types when data is calculated or used in a Data Analysis Expressions (DAX) formula.

Типы данных, используемые в табличных моделяхData types used in tabular models

При импорте данных или использовании значения в формуле, даже если исходный источник данных содержит другой тип данных, данные преобразуются в один из следующих типов.When you import data or use a value in a formula, even if the original data source contains a different data type, the data is converted to one of the following data types. Эти типы данных также используются для значений, являющихся результатами вычисления формул.Values that result from formulas also use these data types.

В целом такие типы данных реализованы для поддержки точных вычислений в вычисляемых столбцах, а в целях обеспечения согласованности такие же ограничения применяются к остальным данным в моделях.In general, these data types are implemented to enable accurate calculations in calculated columns, and for consistency the same restrictions apply to the rest of the data in models.

Форматы, используемые для чисел, валюты, значений даты и времени должны соответствовать формату локали, указанному на клиенте, используемом для работы с данными модели.Formats used for numbers, currency, dates and times should follow the format of the locale that is specified on the client used to work with model data. Для управления отображением значения используются параметры форматирования в модели.You can use the formatting options in the model to control the way that the value is displayed.

Тип данных в моделиData type in model Тип данных в DAXData type in DAX ОписаниеDescription
Whole NumberWhole Number 64-разрядное (8-байтовое) целочисленное значение*A 64 bit (eight-bytes) integer value*

Примечание.Note:
В формулах DAX не поддерживаются типы данных, которые слишком малы для хранения минимального значения, указанного в описании.DAX formulas do not support data types that are too small to hold the minimum value listed in the description.
Числа без десятичных разрядов.Numbers that have no decimal places. Целые числа могут быть положительными или отрицательными, но не могут содержать дробную часть в диапазоне -9,223,372,036,854,775,808 (-2^63) и 9,223,372,036,854,775,807 (2^63-1).Integers can be positive or negative numbers, but must be whole numbers between -9,223,372,036,854,775,808 (-2^63) and 9,223,372,036,854,775,807 (2^63-1).
Десятичное числоDecimal Number 64-разрядное (8 байтовое) вещественное число *A 64 bit (eight-bytes) real number*

Примечание.Note:
В формулах DAX не поддерживаются типы данных, которые слишком малы для хранения минимального значения, указанного в описании.DAX formulas do not support data types that are too small to hold the minimum value listed in the description.
Вещественные числа — это числа, которые могут иметь знаки после запятой.Real numbers are numbers that can have decimal places. Вещественные числа включают широкий диапазон значений.Real numbers cover a wide range of values:

Отрицательные числа от -1.79E +308 до -2.23E -308Negative values from -1.79E +308 through -2.23E -308

ZeroZero

Положительные числа от 2.23E -308 до 1.79E + 308Positive values from 2.23E -308 through 1.79E + 308

Однако количество значащих цифр ограничено 17 знаками после запятой.However, the number of significant digits is limited to 17 decimal digits.
Логическое значениеBoolean Логическое значениеBoolean Значение True или False.Either a True or False value.
ТекстаText StringString Строка символьных данных в Юникоде.A Unicode character data string. Может быть строками, числами или датами, представленными в текстовом формате.Can be strings, numbers, or dates represented in a text format.
ДатаDate Дата-времяDate/time Значения даты и времени в принятом представлении даты-времени.Dates and times in an accepted date-time representation.

Допустимый диапазон дат включает значения после 1 марта 1900г.Valid dates are all dates after March 1, 1900.
CURRENCYCurrency CURRENCYCurrency Тип данных "Валюта" включает значения в диапазоне от -922,337,203,685,477.5808 до 922,337,203,685,477.5807 с четырьмя десятичными знаками заданной точности.Currency data type allows values between -922,337,203,685,477.5808 to 922,337,203,685,477.5807 with four decimal digits of fixed precision.
Н/ДN/A ПустоBlank Тип данных с пустыми значениями в DAX представляет и заменяет пустые значения NULL в SQL.A blank is a data type in DAX that represents and replaces SQL nulls. Пустое значение создается с помощью функции BLANK, а проверяется с помощью логической функции ISBLANK.You can create a blank by using the BLANK function, and test for blanks by using the logical function, ISBLANK.

* Если вы попытаетесь импортировать данные с большими числовыми значениями, Импорт может завершиться со следующей ошибкой:* If you attempt to import data that has large numeric values, import might fail with the following error:

Ошибка памяти базы данных: "<Имя столбца >" столбец "<имя таблицы >" таблица содержит значение "1.7976931348623157E + 308», которое не поддерживается.In-memory database error: The '<column name>' column of the '<table name>' table contains a value, '1.7976931348623157e+308', which is not supported. Операция была отменена.The operation has been canceled.

Эта ошибка возникла из-за того, что конструктор моделей использует это значение для представления значений NULL.This error occurs because the model designer uses that value to represent nulls. В следующем списке описаны значения, которые являются синонимами ранее упомянутого значения NULL:The values in the following list are synonyms to the previous mentioned null value:

ЗначениеValue
92233720368547758079223372036854775807
-9223372036854775808-9223372036854775808
1.7976931348623158e+3081.7976931348623158e+308
2.2250738585072014e-3082.2250738585072014e-308

Удалить значение из данных и повторите попытку импорта.Remove the value from your data and try importing again.

Примечание

Невозможен импорт данных из столбца varchar(max) , который содержит строку длиной более 131 072 символов.You cannot import from a varchar(max) column that contains a string length of more than 131,072 characters.

table, тип данныхTable data type

Кроме того, в DAX используется тип данных table .In addition, DAX uses a table data type. Этот тип данных работает во многих функциях DAX, в том числе в агрегатах и в логике операций со временем.This data type is used by DAX in many functions, such as aggregations and time intelligence calculations. Для некоторых функций необходима ссылка на таблицу, а другие функции возвращают таблицу, которая может служить входным аргументом функций первого типа.Some functions require a reference to a table; other functions return a table that can then be used as input to other functions. В некоторых функциях, входным аргументом которых должна быть таблица, может быть указано выражение, результатом которого является таблица, а некоторым из функций требуется ссылка на базовую таблицу.In some functions that require a table as input, you can specify an expression that evaluates to a table; for some functions, a reference to a base table is required. Сведения о требованиях конкретных функций см. в справочнике по функциям DAX.For information about the requirements of specific functions, see DAX Function Reference.

Явное и неявное преобразование типов в формулах DAXImplicit and explicit data type conversion in DAX Formulas

Каждая функция DAX обладает особыми требованиями к типу входных и выходных данных.Each DAX function has specific requirements as to the types of data that are used as inputs and outputs. Например, часть аргументов некоторых функций должны быть целыми числами, а другая часть — значениями даты. Для других функций требуется текст или таблицы.For example, some functions require integers for some arguments and dates for others; other functions require text or tables.

Если данные в столбце, указанном в качестве аргумента несовместим с типом данных, необходимых для функции, во многих случаях DAX возвращает ошибку.If the data in the column that you specify as an argument is incompatible with the data type required by the function, DAX in many cases returns an error. Тем не менее везде, где возможных DAX пытается выполнить неявное преобразование данных в требуемый тип данных.However, wherever possible DAX attempts to implicitly convert the data to the required data type. Пример:For example:

  • Можно ввести номер, например «123», как строка.You can type a number, for example "123", as a string. DAX анализирует строку и попытается указать ее как числовой тип данных.DAX parses the string and attempt to specify it as a number data type.

  • Можно выполнить сложение TRUE + 1 и получить результат 2, поскольку значение TRUE неявно преобразуется в число 1, и выполняется операция 1 + 1.You can add TRUE + 1 and get the result 2, because TRUE is implicitly converted to the number 1 and the operation 1+1 is performed.

  • Если складываются значения из двух столбцов и одно из значений представлено в виде текста («12»), а другое — в виде числа 12, то DAX выполняет неявное преобразование строки в число, а затем выполнит сложение, чтобы получить числовой результат.If you add values in two columns, and one value happens to be represented as text ("12") and the other as a number (12), DAX implicitly converts the string to a number and then does the addition for a numeric result. Выражение = "22"+22 возвращает значение 44.The following expression returns 44: = "22" + 22

  • Если выполнить попытку объединить два числа, они представлены в виде строки и затем сцепляются.If you attempt to concatenate two numbers, they are presented as strings and then concatenated. Выражение = 12&34 возвращает значение "1234".The following expression returns "1234": = 12 & 34

В следующей таблице представлены неявные преобразования типов данных, выполняемые в формулах.The following table summarizes the implicit data type conversions that are performed in formulas. В целом конструктор семантических моделей работает аналогично Microsoft Excel, по возможности выполняя неявные преобразования всегда, где это необходимо для выполнения операции.In general, semantic model designer behaves like Microsoft Excel, and performs implicit conversions whenever possible when required by the specified operation.

Таблица неявных преобразований данныхTable of implicit data conversions

Тип выполняемого преобразования определяется оператором, который приводит требуемые значения к нужному типу перед выполнением запрошенной операции.The type of conversion that is performed is determined by the operator, which casts the values it requires before performing the requested operation. В следующих таблицах перечислены операторы и указано преобразование, выполняемое для каждого типа данных в столбце, когда этот тип встречается вместе с типом данных из пересекающейся строки.These tables list the operators, and indicate the conversion that is performed on each data type in the column when it is paired with the data type in the intersecting row.

Примечание

В эти таблицы не входят текстовые типы данных.Text data types are not included in these tables. Если число представлено в формате текста, в некоторых случаях конструктор моделей пытается определить числовой тип и представить значение в виде числа.When a number is represented as in a text format, in some cases, the model designer attempts to determine the number type and represent it as a number.

Сложение (+)Addition (+)

Оператор (+)Operator (+) INTEGERINTEGER Измерение валютCURRENCY realREAL Дата-времяDate/time
INTEGERINTEGER INTEGERINTEGER Измерение валютCURRENCY realREAL Дата-времяDate/time
CURRENCYCURRENCY CURRENCYCURRENCY CURRENCYCURRENCY realREAL Дата-времяDate/time
realREAL realREAL realREAL realREAL Дата-времяDate/time
Дата/времяDate/time Дата/времяDate/time Дата/времяDate/time Дата/времяDate/time Дата-времяDate/time

Например, если в операции сложения используется вещественное число со значением денежной единицы, то оба значения преобразуются в тип REAL и возвращаемый результат имеет тип REAL.For example, if a real number is used in an addition operation in combination with currency data, both values are converted to REAL, and the result is returned as REAL.

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

В следующей таблице заголовок строки является уменьшаемым (слева) и заголовок столбца — вычитаемым (справа):In the following table, the row header is the minuend (left side) and the column header is the subtrahend (right side):

Оператор (-)Operator (-) INTEGERINTEGER Измерение валютCURRENCY realREAL Дата-времяDate/time
INTEGERINTEGER INTEGERINTEGER Измерение валютCURRENCY realREAL realREAL
CURRENCYCURRENCY CURRENCYCURRENCY CURRENCYCURRENCY realREAL realREAL
realREAL realREAL realREAL realREAL realREAL
Дата-времяDate/time Дата/времяDate/time Дата/времяDate/time Дата/времяDate/time Дата-времяDate/time

Например, если в операции вычитания дата используется вместе с любым другим типом данных, то оба значения преобразуются в значения даты и возвращаемое значение будет иметь тип даты.For example, if a date is used in a subtraction operation with any other data type, both values are converted to dates, and the return value is also a date.

Примечание

Табличные модели поддерживают также унарный оператор «-» (отрицание), однако этот оператор не изменяет тип данных операнда.Tabular models also support the unary operator, - (negative), but this operator does not change the data type of the operand.

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

Оператор (*)Operator (*) INTEGERINTEGER Измерение валютCURRENCY realREAL Дата-времяDate/time
INTEGERINTEGER INTEGERINTEGER Измерение валютCURRENCY realREAL INTEGERINTEGER
CURRENCYCURRENCY CURRENCYCURRENCY realREAL CURRENCYCURRENCY CURRENCYCURRENCY
realREAL realREAL CURRENCYCURRENCY realREAL realREAL

Например, если в операции умножения целое число используется вместе с вещественным, то оба числа преобразуются в вещественные и возвращаемое значение также будет иметь тип REAL.For example, if an integer is combined with a real number in a multiplication operation, both numbers are converted to real numbers, and the return value is also REAL.

Деление (/)Division (/)

В следующей таблице заголовок строки содержит значение числителя, а заголовок столбца содержит знаменатель.In the following table the row header is the numerator and the column header is the denominator.

Оператор (/)Operator (/)

(Строка/столбец)(Row/Column)
INTEGERINTEGER Измерение валютCURRENCY realREAL Дата-времяDate/time
INTEGERINTEGER realREAL CURRENCYCURRENCY realREAL realREAL
CURRENCYCURRENCY CURRENCYCURRENCY realREAL CURRENCYCURRENCY realREAL
realREAL realREAL realREAL realREAL realREAL
Дата-времяDate/time realREAL realREAL realREAL realREAL

Например, если в операции деления целое число используется вместе со значением денежной единицы, то оба значения преобразуются в вещественные числа, при этом результат также будет вещественным числом.For example, if an integer is combined with a currency value in a division operation, both values are converted to real numbers, and the result is also a real number.

Операторы сравненияComparison operators

Поддерживается только ограниченный набор сочетаний смешанного типа данных для операций сравнения значений.Only a limited set of mixed data-type combinations for comparison operations is supported. Дополнительные сведения см. в статье Справочник по операторам DAX.To learn more, see DAX Operator Reference.

Обработка пустых значений, пустых строк и нулевых значенийHandling of blanks, empty strings, and zero values

В следующей таблице перечислены различия между DAX и в Microsoft Excel, в обработке пустых значений:The following table summarizes the differences between DAX and in Microsoft Excel, in the way that blanks are handled:

ВыражениеExpression DAXDAX ExcelExcel
BLANK + BLANKBLANK + BLANK BLANKBLANK 0 (ноль)0 (zero)
BLANK +5BLANK +5 55 55
BLANK * 5BLANK * 5 BLANKBLANK 0 (ноль)0 (zero)
5/ПУСТО5/BLANK БесконечностьInfinity ОшибкаError
0/BLANK0/BLANK NaNNaN ОшибкаError
BLANK/BLANKBLANK/BLANK ПустоBLANK ОшибкаError
FALSE OR BLANKFALSE OR BLANK FALSEFALSE FALSEFALSE
FALSE AND BLANKFALSE AND BLANK FALSEFALSE FALSEFALSE
TRUE OR BLANKTRUE OR BLANK TRUETRUE TRUETRUE
TRUE AND BLANKTRUE AND BLANK FALSEFALSE TRUETRUE
BLANK OR BLANKBLANK OR BLANK BLANKBLANK ОшибкаError
BLANK AND BLANKBLANK AND BLANK BLANKBLANK ОшибкаError

Подробные сведения об обработке пустых значений в отдельных функциях и операторах см. в статьях и разделах справочника по функциям DAX, посвященных соответствующим функциям.For details on how a particular function or operator handles blanks, see the individual topics for each DAX function, in the section, DAX Function Reference.