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


Типы данных

✅ Поток событий Azure Stream Analytics ✅ Fabric

Каждая запись имеет связанный тип данных. Тип данных описывает (и ограничивает) набор значений, которые запись этого типа может содержать или выражение этого типа, которое может производить.

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

Поддерживаемые типы данных

Ниже приведен список поддерживаемых типов данных.

Тип данных Описание
Бигинт Целые числа в диапазоне -2^63 (-9,223,372 036 854 775 808) до 2^63-1 (9,223 372 036 854 775 807).
плавать Числа с плавающей запятой в диапазоне — 1,79E+308 до -2,23E-308, 0 и 2.23E-308 до 1,79E+308. Десятичные значения с плавающей запятой, как правило, не имеют точного двоичного представления. Потеря точности может быть испытана. Это не связано с Azure Stream Analytics, но происходит во всех реализациях чисел с плавающей запятой.
nvarchar(max) Текстовые значения, состоящие из символов Юникода. Примечание. Значение, отличное от максимального, не поддерживается.
дата/время Определяет дату, которая сочетается с временем дня с дробной секундой (7 цифр, точность 100 наносекунд), которая основана на 24-часовых часах и относительно UTC (смещение часового пояса 0).
кусочек Целое число, которое может принимать значение 1, 0 или NULL. Это поддерживается на уровне совместимости 1.2 и выше.
запись Набор пар name/value. Значения должны иметь поддерживаемый тип данных.
массив Упорядоченная коллекция значений. Значения должны иметь поддерживаемый тип данных.

Вы можете присоединиться (или сравнить) bigint и тип данных с плавающей запятой. Он будет работать правильно во всех случаях, за исключением случая очень больших больших значений, которые не могут быть представлены.

Замечание

При чтении типов данных bigint за пределами диапазона azure Stream Analytics поддерживается, задание Stream Analytics не сможет десериализировать события с сообщением об ошибке: InputDeserializationError. Вы можете предварительно обработать данные и преобразовать их в строку. Одним из вариантов является использование функций Azure для предварительной обработки данных и преобразования таких больших целых чисел в строку.

Преобразование типов

Это правила , управляющие преобразованиями типов данных:

  • Преобразование без потери точности во время операций ввода и вывода записи неявно и всегда успешно
  • Точность потери и переполнения внутри операций записи выходных данных обрабатывается настроенной политикой ошибок (задано значение Drop или Retry)
  • Ошибки преобразования типов, происходящие во время операций записи выходных данных, обрабатываются политикой ошибок
  • Ошибки преобразования типов, происходящие во время операций чтения входных данных, приводят к удалению события.

Потеря точности может произойти при преобразовании значений в float. Это не связано с Azure Stream Analytics, но к типу данных с плавающей запятой в целом. Таким образом, это не считается ошибкой. В случае сохранения каждой цифры данные должны быть считываются как строка.

Приведение данных

Существует четыре функции на языке потоковой передачи SQL, которые полезны для наблюдения и настройки типа данных данных.

  • CAST : приведение одного столбца к заданному типу приведет к сбою задания в случае ошибки преобразования.
  • TRY_CAST : приведение одного столбца к заданному типу — ошибки пропускаются как NULL. Ознакомьтесь с проверкой входных данных о том, как лучше использовать TRY_CAST
  • CREATE TABLE : определите одну явную схему для входных данных. Строки с ошибками преобразования удаляются из потока
  • GetType : возвращает тип столбца

Для большинства вариантов использования рекомендуется использовать TRY_CAST. Эта функция защищает подчиненную обработку, обеспечивая тип вывода, предотвращая потерю данных путем замены значения в ошибке значением NULL. Строка не удаляется, и исходное значение по-прежнему можно проецировать в другом столбце.

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

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

Преобразование в бит

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

От Кому
(BIT) 1 (FLOAT) 1.0
(BIT) 0 (FLOAT) 0.0
(BIT) НЕДЕЙСТВИТЕЛЬНЫЙ (FLOAT) НЕДЕЙСТВИТЕЛЬНЫЙ
(FLOAT) 0.0 (BIT) 0
(FLOAT) любое другое значение (BIT) 1
(FLOAT) НЕДЕЙСТВИТЕЛЬНЫЙ (BIT) НЕДЕЙСТВИТЕЛЬНЫЙ

Сопоставления типов и форматы сериализации

Тип данных CSV в CSV-файл JSON в Json out Avro in Avro out
bigint строка, преобразованная в 64-разрядное целое число со знаком 64-разрядное целое число со знаком, преобразованное в строку с использованием языка и региональных параметров задания число: целое число, преобразованное в 64-разрядное целое число со знаком;

Логическое значение: на уровне совместимости 1.1 и ниже "false" преобразуется в 0, "true" преобразуется в 1
число: целое число длинное и целое число, преобразованное в 64-разрядное целое число со знаком;

Логическое значение: на уровне совместимости 1.1 и ниже false преобразуется в 0, значение true преобразуется в 1
долго
плавать строка, преобразованная в 64-разрядный номер со знаком с плавающей запятой 64-разрядный номер с плавающей запятой, преобразованный в строку с использованием языка и региональных параметров задания число: дробь преобразована в 64-разрядное число с плавающей запятой со знаком число: дробь double и float преобразованы в 64-разрядный номер со знаком с плавающей запятой двойной
nvarchar(max) струна струна струна струна струна струна
datetime строка, преобразованная в datetime после стандарта ISO 8601 строка с использованием стандарта ISO 8601 строка, преобразованная в datetime после стандарта ISO 8601 datetime, преобразованный в строку с помощью стандарта ISO 8601 строка, преобразованная в datetime после стандарта ISO 8601 datetime, преобразованный в строку с помощью стандарта ISO 8601
bit (уровень совместимости 1.2 и выше) Строка "true", "false" или "NULL" преобразуется в целочисленное значение 1, 0 или null соответственно преобразован в строку "true" или "false" Логическое значение: "false" преобразуется в 0, "true" преобразуется в 1 Логическое значение: логическое значение Логическое значение: false преобразуется в 0, значение true преобразуется в 1 булевый
записи Не применимо Не поддерживается, строка "Запись" выводится Объект JSON Объект JSON Тип записи Avro Тип записи Avro
array. Не применимо Не поддерживается, строка "Массив" выводится Объект JSON Объект JSON Тип записи Avro Тип записи Avro

Замечание

Для Parquet не требуется преобразование типов данных.

Сопоставление типов при записи в структурированные хранилища данных

Тип данных SQL Power BI Azure Cosmos DB (облачная база данных) PostgreSQL Анализатор данных Azure
bigint bigint, int, smallint, tinyint, все типы строк (ntext, nvarchar, char, ...) да числовой: целое число Бигинт

Если тип столбца имеет небольшое или целое число, возникнет ошибка "неправильный формат двоичных данных".
dynamic, int, long
плавать float, real, decimal, numeric, все типы строк (ntext, nvarchar, char, ...) да число: дробь двойная точность, числовой. Ограничено 1.78E+308

Если тип столбца является реальным, возникнет ошибка "неправильный формат двоичных данных".
динамический, реальный, двойной
nvarchar(max) Все типы строк (ntext, nvarchar, char, uniqueidentifier...) да струна различающиеся символы, текст dynamic, string
datetime datetime, datetime2, datetimeoffset, все типы строк (ntext, nvarchar, char, ...) да datetime, преобразованный в строку с помощью стандарта ISO 8601 метка времени в формате UTC, метка времени в противном случае dynamic, string, datetime
bit (уровень совместимости 1.2 и выше) bigint, int, smallint, tinyint, bit, все типы строк (ntext, nvarchar, char, ...) да логическое значение: 1 преобразуется в true, 0 преобразуется в false кусочек dynamic, bool
записи Не поддерживается, строка "Запись" выводится Не поддерживается, строка "Запись" выводится Объект JSON Не поддерживается dynamic, bool, long, datetime, массив байтов, real, double, string
array. Не поддерживается, строка "Массив" выводится Не поддерживается, строка "Массив" выводится Объект JSON Не поддерживается dynamic, string