Типы данных, поддерживаемые в книгах 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.