Поделиться через


Поддерживаемые типы данных (табличные службы SSAS)

В этом разделе описаны типы данных, которые можно использовать в табличных моделях, и рассматривается неявное преобразование типов данных, выполняемое при вычислении данных или их использовании в формуле выражения анализа данных (DAX).

Эта статья состоит из следующих разделов:

  • Типы данных, используемые в табличных моделях

  • Явное и неявное преобразования типов данных в формулах DAX

  • Обработка пустых значений, пустых строк и нулевых значений

Типы данных, используемые в табличных моделях

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

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

Форматы, используемые для чисел, валюты, значений даты и времени должны соответствовать формату локали, указанному на клиенте, используемом для работы с данными модели. Для управления отображением значения используются параметры форматирования в модели.

Тип данных в модели

Тип данных в DAX

Описание

Whole Number

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

Zero

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

Однако количество значащих цифр ограничено 15 знаками после запятой.

Логическое значение

Логическое значение

Значение True или False.

Текст

Строковые значения

Строка символьных данных в Юникоде. Могут быть строками, числами или датами, представленными в текстовом формате.

Дата

Дата-время

Значения даты и времени в принятом представлении даты-времени.

Допустимый диапазон дат включает значения после 1 марта 1900г.

Валюта

Валюта

Тип данных «Валюта» включает значения в диапазоне от -922,337,203,685,477.5808 до 922,337,203,685,477.5807 с четырьмя десятичными знаками заданной точности.

н/д

Пустые значения

Тип пустых значений в DAX представляет и заменяет пустые значения NULL в SQL. Пустое значение создается с помощью функции BLANK, а проверяется с помощью логической функции ISBLANK.

1 В формулах DAX не поддерживаются типы данных, размер которых меньше типов, представленных в этой таблице.

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

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

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

Значение

9223372036854775807

-9223372036854775808

1.7976931348623158e+308

2.2250738585072014e-308

Следует удалить значение из данных и повторить импорт.

ПримечаниеПримечание

Невозможен импорт данных из столбца varchar(max), который содержит строку длиной более 131 072 символов.

Тип данных Table

Кроме того, в DAX используется новый тип данных table. Этот тип данных работает во многих функциях DAX, в том числе в агрегатах и в логике операций со временем. Для некоторых функций необходима ссылка на таблицу, а другие функции возвращают таблицу, которая может служить входным аргументом функций первого типа. В некоторых функциях, входным аргументом которых должна быть таблица, может быть указано выражение, результатом которого является таблица, а некоторым из функций требуется ссылка на базовую таблицу. Сведения о требованиях конкретных функций см. в разделе Справочник по функциям DAX.

Явное и неявное преобразования типов данных в формулах DAX

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

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

  • Можно ввести номер, например «123», как строку. DAX проанализирует строку и попытается указать ее как строку с числовым типом данных.

  • Можно выполнить сложение TRUE + 1 и получить результат 2, поскольку значение TRUE неявно преобразуется в число 1, и выполняется операция 1 + 1.

  • Если складываются значения из двух столбцов и одно из значений представлено в виде текста («12»), а другое — в виде числа 12, то DAX выполняет неявное преобразование строки в число, а затем выполнит сложение, чтобы получить числовой результат. В следующем выражении возвращается значение 44. = «22» + 22

  • Если выполнить попытку объединить два числа как строки, то надстройка с кодовым именем PowerPivot представит числа в виде строк, а затем выполнит объединение. В следующем значении возвращается значение 1234. = 12 & 34

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

Таблица неявных преобразований данных

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

ПримечаниеПримечание

В эти таблицы не входят текстовые типы данных. Если число представлено в текстовом формате, то в некоторых случаях конструктор моделей пытается определить числовой тип и представить значение в виде числа.

Сложение (+)

Оператор (+)

INTEGER

CURRENCY

REAL

Дата/время

INTEGER

INTEGER

CURRENCY

REAL

Дата/время

CURRENCY

CURRENCY

CURRENCY

REAL

Дата/время

REAL

REAL

REAL

REAL

Дата/время

Дата/время

Дата/время

Дата/время

Дата/время

Дата/время

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

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

В следующей таблице заголовок строки содержит значение minuend (слева), а заголовок столбца содержит значение subtrahend (справа).

Оператор (-)

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

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

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

В выражениях сравнения логические значения рассматриваются как большие, чем строковые значения, а строковые значения рассматриваются как большие, чем числовые значения или значения «дата/время». Числовые значения и значения «дата/время» рассматриваются как значения одного уровня сравнения. Неявные преобразования не выполняются в отношении логических или строковых значений. Пустое значение преобразуется в 0/«»/false, в зависимости от типа данных другого сравниваемого значения.

В следующих DAX-выражениях демонстрируется данное поведение.

=IF(FALSE()>"true","Expression is true", "Expression is false"), возвращаемое значение "Expression is true"

=IF("12">12,"Expression is true", "Expression is false"), возвращаемое значение "Expression is true"

=IF("12"=12,"Expression is true", "Expression is 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

Дата/время

Обработка пустых значений, пустых строк и нулевых значений

Правила обработки нулевых значений, значений NULL и пустых строк в DAX отличаются от правил, применяемых в Microsoft Excel и SQL Server. В этом разделе приводятся различия и описывается порядок обработки таких типов данных.

Важно помнить, что пустое значение, пустая ячейка или отсутствующее значение представляются с помощью одного нового типа значения — BLANK. Порядок обработки пустых значений в операциях, например при сложении или объединении, определяется отдельно для каждой функции. Пустые значения можно создавать с помощью функции BLANK, а для проверки наличия пустых значений можно использовать функцию ISBLANK. Значения NULL из баз данных не поддерживаются в семантической модели и неявно преобразуются в пустые значения, когда в формуле DAX упоминается столбец, содержащий значение NULL.

Определение пустых значений, значений NULL и пустых строк

В следующей таблице представлены различия в обработке пустых значений между 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 OR BLANK

FALSE

FALSE

FALSE AND BLANK

FALSE

FALSE

TRUE OR BLANK

TRUE

TRUE

TRUE AND BLANK

FALSE

TRUE

BLANK OR BLANK

BLANK

Ошибка

BLANK AND BLANK

BLANK

Ошибка

Подробные сведения об обработке пустых значений в отдельных функциях и операторах см. в подразделах по каждой из функций DAX раздела Справочник по функциям DAX.

См. также

Основные понятия

Источники данных (табличные службы SSAS)

Импорт данных (табличные службы SSAS)