Типы данных, поддерживаемые в книгах PowerPivot

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

Типы данных, используемые в PowerPivot для Excel

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

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

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

Типы данных в пользовательском интерфейсе PowerPivot

Тип данных в DAX

Описание

Целое число

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

Boolean

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

Текст

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

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

Максимальная длина строки составляет 268 435 456 символов Юникода (256 мегасимволов) или 536 870 912 байт.

Дата

Дата-время

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

Допустимыми являются все даты после 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», которое не поддерживается. Операция была отменена.

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

Значение

9223372036854775807

-9223372036854775808

1.7976931348623158e+308

2.2250738585072014e-308

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

Тип данных Table

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

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

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

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

  • Можно ввести дату как строку, и DAX выполнит синтаксический анализ строки, а затем попытается привести ее к одному из форматов даты и времени Windows.

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

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

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

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

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

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

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

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

Сложение (+)

Оператор (+)

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

Дата/время

Дата/время

Дата/время

Дата/время

Дата/время

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

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

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

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

Оператор (*)

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. В этом разделе приводятся различия и описывается порядок обработки таких типов данных.

Важно помнить, что в PowerPivot пустое значение, пустая ячейка и отсутствующее значение представляются с помощью одного нового типа — BLANK. Порядок обработки пустых значений в операциях, например при сложении или объединении, определяется отдельно для каждой функции. Пустые значения можно создавать с помощью функции BLANK, а для проверки наличия пустых значений можно использовать функцию ISBLANK. Значения NULL из баз данных не поддерживаются в книге PowerPivot и неявно преобразуются в пустые значения, когда в формуле 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.

См. также

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

Общие сведения по выражениям анализа данных (DAX)