применимо: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium
В этой статье описываются типы данных, которые можно использовать в табличных моделях, и обсуждается неявное преобразование типов данных, когда данные вычисляются или используются в формуле выражений анализа данных (DAX).
Типы данных, используемые в табличных моделях
При импорте данных или использовании значения в формуле, даже если исходный источник данных содержит другой тип данных, данные преобразуются в один из следующих типов данных. Значения, полученные из формул, также используют эти типы данных.
Как правило, эти типы данных реализуются для обеспечения точных вычислений в вычисляемых столбцах и для согласованности одни и те же ограничения применяются к остальным данным в моделях.
Форматы, используемые для чисел, валют, дат и времени, должны соответствовать локали, указанной в клиенте, с которым работают данные модели. Параметры форматирования в модели можно использовать для управления отображением значения.
Заметка: Формулы DAX не поддерживают типы данных, слишком малые для хранения минимального значения, указанного в описании.
Числа без десятичных разрядов. Целые числа могут быть положительными или отрицательными, но должны быть целыми числами от -9 223 372 036 854 775 807 (-2^63+1) до 9 223 372 036 854 775 806 (2^63-2).
Десятичное число
64-разрядное (восемь байт) реальное число*
Заметка: Формулы DAX не поддерживают типы данных, слишком малые для хранения минимального значения, указанного в описании.
Реальные числа — это числа, которые могут иметь десятичные разряды. Реальные числа охватывают широкий диапазон значений:
Отрицательные значения от -1.79E +308 до -2.23E -308
Нуль
Положительные значения от 2.23E -308 до 1.79E + 308
Однако количество значимых цифр ограничено 15 десятичными цифрами.
Boolean
Boolean
Значение либо True, либо False.
Текст
Струна
Строка данных символов Юникода. Может быть строками, числами или датами, представленными в текстовом формате. Действующий максимальный размер строки имеет значение 32767 байтов.
Дата
Дата/время
Даты и время в принятом представлении даты и времени.
Допустимые даты — это все даты после 1 марта 1900 года.
Валюта
Валюта
Тип данных валюты позволяет значениям от –922 337 203 685 477,5807 до 922 337 203 685 477,5806 с фиксированной точностью в четыре десятичных знака.
Вариант
Вариант
Используется для выражений, таких как меры DAX, которые могут возвращать различные типы данных. Например, метрика DAX, возвращающая целое число или строку, будет иметь тип variant.
Не применимо
Пустой
Пустое значение — это тип данных в DAX, который представляет и заменяет NULL в SQL. Вы можете создать пустое с помощью функции BLANK и проверить наличие пустых с помощью логической функции ISBLANK.
* Если вы пытаетесь импортировать данные с большими числовыми значениями, импорт может завершиться следующей ошибкой:
Ошибка базы данных в памяти: столбец '<имя столбца>' таблицы '<имя таблицы>' содержит значение '1.7976931348623157e+308', которое не поддерживается. Операция отменена.
Эта ошибка возникает из-за того, что конструктор моделей использует это значение для представления значений NULL. Значения в следующем списке являются синонимами предыдущего указанного значения NULL:
Ценность
9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1.7976931348623158e+308
Удалите значение из данных и повторите импорт.
Примечание
Невозможно импортировать из столбца varchar(max), содержащего длину строки более 131 072 символов.
Тип данных таблицы
Кроме того, DAX использует тип данных таблицы . Этот тип данных используется в DAX во многих функциях, таких как агрегирование и вычисления временной аналитики. Для некоторых функций требуется ссылка на таблицу; другие функции возвращают таблицу, которую затем можно использовать в качестве входных данных для других функций. В некоторых функциях, требующих таблицы в качестве входных данных, можно указать выражение, которое оценивается в таблице; для некоторых функций требуется ссылка на базовую таблицу. Сведения о требованиях конкретных функций см. в справочнике по функциям DAX.
Неявное и явное преобразование типов данных в формулах DAX
Каждая функция DAX имеет определенные требования к типам данных, которые используются в качестве входных и выходных данных. Например, некоторые функции требуют целых чисел для некоторых аргументов и дат для других; для других функций требуется текст или таблицы.
Если данные в столбце, указанные в качестве аргумента, несовместимы с типом данных, необходимым функцией, DAX во многих случаях возвращает ошибку. Однако, когда возможно DAX пытается неявно преобразовать данные в требуемый тип данных. Рассмотрим пример.
Можно ввести число, например "123", в виде строки. DAX анализирует строку и пытается преобразовать её в числовой тип данных.
Можно добавить TRUE + 1 и получить результат 2, так как значение TRUE неявно преобразуется в число 1 и выполняется операция 1+1.
Если вы добавляете значения в два столбца, а одно значение представляется в виде текста ("12") и другого в виде числа (12), DAX неявно преобразует строку в число, а затем добавляет числовый результат. Следующее выражение возвращает 44: = "22" + 22
Если вы пытаетесь объединить два числа, они представлены в виде строк, а затем сцеплены. Следующее выражение возвращает значение "1234": = 12 и 34
В следующей таблице приведены неявные преобразования типов данных, выполняемые в формулах. Как правило, конструктор семантических моделей ведет себя как Microsoft Excel и выполняет неявные преобразования, когда это возможно при необходимости указанной операцией.
Таблица неявных преобразований данных
Тип преобразования, который выполняется, определяется оператором, который приводит значения, необходимые перед выполнением запрошенной операции. Эти таблицы перечисляют операторы и указывают преобразование, которое выполняется для каждого типа данных в столбце при паре с типом данных в пересекающейся строке.
Примечание
Текстовые типы данных не включены в эти таблицы. Если число представлено в текстовом формате, в некоторых случаях конструктор моделей пытается определить тип числа и представить его в виде числа.
Добавление (+)
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
ЦЕЛОЕ ЧИСЛО
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
ВАЛЮТА
ВАЛЮТА
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
Дата/время
Дата и время
Дата/время
Дата/время
Дата/время
Дата/время
Например, если реальное число используется в операции сложения в сочетании с данными валюты, оба значения преобразуются в REAL, а результат возвращается как REAL.
Вычитание (-)
В следующей таблице заголовок строки — это уменьшаемое (левая сторона), а заголовок столбца — вычитаемое (правая сторона).
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
ЦЕЛОЕ ЧИСЛО
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
ВАЛЮТА
ВАЛЮТА
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
Дата и время
Дата/время
Дата/время
Дата/время
Дата/время
Например, если дата используется в операции вычитания с любым другим типом данных, оба значения преобразуются в даты, а возвращаемое значение также является датой.
Примечание
Табличные модели также поддерживают унарный оператор - (отрицательный), но этот оператор не изменяет тип данных операнда.
Умножение (*)
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
ЦЕЛОЕ ЧИСЛО
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
ВАЛЮТА
РЕАЛЬНЫЙ
ВАЛЮТА
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
Например, если целое число объединяется с реальным числом в операции умножения, оба числа преобразуются в реальные числа, а возвращаемое значение также является РЕАЛЬНЫМ.
Деление (/)
В следующей таблице заголовок строки — числитель, а заголовок столбца — знаменатель: (Строка или столбец)
ЦЕЛОЕ ЧИСЛО
ВАЛЮТА
РЕАЛЬНЫЙ
Дата/время
ЦЕЛОЕ ЧИСЛО
РЕАЛЬНЫЙ
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
ВАЛЮТА
ВАЛЮТА
РЕАЛЬНЫЙ
ВАЛЮТА
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
Дата и время
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
РЕАЛЬНЫЙ
Например, если целое число объединяется со значением валюты в операции деления, оба значения преобразуются в реальные числа, а результат также является реальным числом.
Операторы сравнения
Поддерживается только ограниченный набор сочетаний смешанных типов данных для операций сравнения. Дополнительные сведения см. в справочнике по оператору DAX.
Обработка пробелов, пустых строк и нуль значений
В следующей таблице перечислены различия между DAX и Microsoft Excel так, как обрабатываются пустые элементы:
Выражение
ДАКС
Эксель
BLANK + BLANK
ПУСТОЙ
0 (ноль)
ПУСТО +5
5
5
ПУСТОЕ * 5
ПУСТОЙ
0 (ноль)
5/ПУСТО
Бесконечность
Ошибка
0/ПУСТО
NaN
Ошибка
ПУСТОЕ ИЛИ ПУСТОЕ
ПУСТОЙ
Ошибка
ЛОЖЬ ИЛИ ПУСТО
ЛОЖЬ
ЛОЖЬ
ЛОЖЬ И ПУСТОЙ
ЛОЖЬ
ЛОЖЬ
ИСТИНА ИЛИ ПУСТОЙ
ПРАВДА
ПРАВДА
ИСТИНА И ПУСТОЙ
ЛОЖЬ
ПРАВДА
ПУСТОЕ ИЛИ ПУСТОЕ
ПУСТОЙ
Ошибка
ПУСТОЕ И ПУСТОТА
ПУСТОЙ
Ошибка
Дополнительные сведения о том, как определенная функция или оператор обрабатывает пустые значения, см. в отдельных разделах для каждой функции DAX в разделе "Справочник по функциям DAX".
В этом модуле вы узнаете, как писать формулы DAX для создания вычисляемых таблиц и столбцов, а также мер, которые представляют собой различные типы вычислений модели. Кроме того, вы узнаете, как писать и форматировать формулы DAX, состоящие из выражений, использующих функции, операторы, ссылки на объекты модели, константы и переменные.