Уровень совместимости заданий Azure Stream Analytics

В этой статье описывается уровень совместимости в Azure Stream Analytics.

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

Выбор уровня совместимости

Уровень совместимости управляет поведением во время выполнения задания Stream Analytics.

Azure Stream Analytics в настоящее время поддерживает три уровня совместимости:

  • 1.2 — самое новое поведение с самыми последними улучшениями.
  • 1.1 — прежнее поведение.
  • 1.0 — исходный уровень совместимости, представленный на этапе общей доступности Azure Stream Analytics несколько лет назад.

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

Установка уровня совместимости

Для задания Stream Analytics можно задать уровень совместимости, используя портал Azure или создав вызов REST API задания.

Чтобы обновить уровень совместимости задания на портале Azure, сделайте следующее:

  1. На портале Azure найдите свое задание Stream Analytics.
  2. Перед обновлением уровня совместимости следует Остановить задание. Вы не сможете обновить уровень совместимости, если задание выполняется.
  3. Под заголовком Настройка выберите Уровень совместимости.
  4. Выберите нужное значение уровня совместимости.
  5. В нижней части страницы нажмите кнопку Сохранить.

Уровень совместимости Stream Analytics на портале Azure

При обновлении уровня совместимости T-компилятор проверяет задание с помощью синтаксиса, отвечающего выбранному уровню совместимости.

Уровень совместимости 1.2.

На уровне совместимости 1.2 представлены следующие основные изменения:

Протокол обмена сообщениями AMQP

Уровень 1.2. Azure Stream Analytics использует для записи в очереди и разделы Служебной шины протокол передачи сообщений AMQP. AMQP позволяет создавать кроссплатформенные гибридные приложения, использующие протокол открытого стандарта.

Геопространственные функции

Предыдущие уровни. В Azure Stream Analytics использовались географические вычисления.

Уровень 1.2. Azure Stream Analytics позволяет вычислять геометрические проекции географических координат. В сигнатуре геопространственных функций нет изменений. Однако их семантика немного отличается, что позволяет выполнять вычисления точнее, чем раньше.

Azure Stream Analytics поддерживает индексирование геопространственных эталонных данных. Эталонные данные, содержащие геопространственные элементы, можно индексировать для более быстрого вычисления соединений.

Обновленные геопространственные функции придают полную выразительность геопространственному формату Well Known Text (WKT). Можно указать другие геопространственные компоненты, которые ранее не поддерживались в GeoJson.

Дополнительные сведения см. в разделе Обновления геопространственных функций в Azure Stream Analytics — облако и IoT Edge.

Параллельное выполнение запросов для источников входных данных с несколькими секциями

Предыдущие уровни. Запросы Azure Stream Analytics требовали использования предложения PARTITION BY для параллельной обработки запросов в исходных секциях источника входных данных.

Уровень 1.2. Если логика запроса может быть параллельна в исходных секциях источника входных данных, Azure Stream Analytics создает отдельные экземпляры запросов и параллельно выполняет вычисления.

Интеграция собственного массового API с выходными данными Azure Cosmos DB

Предыдущие уровни. Поведение upsert заключалось в вставке или слиянии.

1.2. Интеграция собственного массового API с выходными данными Azure Cosmos DB обеспечивает максимальную пропускную способность и эффективно обрабатывает запросы регулирования. Дополнительные сведения см. на странице Выходные данные Azure Stream Analytics для Azure Cosmos DB.

Поведение команды Upsert — вставка или замена.

DateTimeOffset при записи в выходные данные SQL

Предыдущие уровни. Типы DateTimeOffset корректировались в формате UTC.

Уровень 1.2. DateTimeOffset больше не корректируется.

Длина при записи в выходные данные SQL

Предыдущие уровни: Значения обрезались в соответствии с целевым типом.

Уровень 1.2. Значения, которые не помещаются в тип целевого объекта, обрабатываются в соответствии с политикой исходящих ошибок.

Сериализация записей и массивов при записи в выходные данные SQL

Предыдущие уровни. Записи записывались как Record, а массивы — как Array.

Уровень 1.2. Записи и массивы сериализуются в формате JSON.

Строгая проверка префикса функций

Предыдущие уровни. Отсутствует определенная проверка префиксов функций.

Уровень 1.2. Azure Stream Analytics имеет определенную проверку префиксов функций. Добавление префикса ко встроенной функции приводит к ошибке. Например, myprefix.ABS(…) не поддерживается.

Добавление префикса ко встроенным статистическим выражениям также приводит к ошибке. Например, myprefix.SUM(…) не поддерживается.

Использование префикса system для любых определяемых пользователем функций приводит к ошибке.

Запретить массив и объект в качестве ключевых свойств в выходном адаптере Azure Cosmos DB

Предыдущие уровни. Типы массивов и объектов поддерживались как ключевые свойства.

Уровень 1.2. Типы массивов и объектов больше не поддерживаются в качестве ключевого свойства.

Десериализация булевого типа в JSON, AVRO и PARQUET

Предыдущие уровни: Azure Stream Analytics десериализует логическое значение в тип BIGINT — false преобразуется в 0, а true преобразуется в 1. Выходные данные создают только логические значения в JSON, AVRO и PARQUET, если вы явно преобразуете события в BIT. Например, сквозной запрос, такой как SELECT value INTO output1 FROM input1 чтение JSON { "value": true } из входных данных1, запишет в выходные данные1 значение JSON { "value": 1 }.

1.2 уровень: Azure Stream Analytics десериализирует логическое значение в тип BIT. False сопоставляется с 0, а Истина сопоставляется с 1. Сквозной запрос, такой как SELECT value INTO output1 FROM input1 чтение JSON { "value": true } из входных данных1, запишет в выходные данные1 JSON-значение { "value": true }. Вы можете преобразовать тип значения к типу BIT в запросе, чтобы значение отображалось как true и false в выходных данных для форматов, поддерживающих логический тип данных.

Уровень совместимости 1.1

На уровне совместимости 1.1 представлены следующие основные изменения:

Формат служебной шины XML

Уровень 1.0. Azure Stream Analytics использует DataContractSerializer, поэтому в содержимое сообщения включены XML-теги. Например:

@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/\u0001{ "SensorId":"1", "Temperature":64\}\u0001

Уровень 1.1. Содержимое сообщения напрямую содержит поток без дополнительных тегов. Например: { "SensorId":"1", "Temperature":64}

Учет регистра в именах полей

Уровень 1.0. Имена полей преобразовывались в нижний регистр при обработке с помощью подсистемы Azure Stream Analytics.

Уровень 1.1: Регистр имен полей сохраняется при обработке в Azure Stream Analytics.

Примечание.

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

ОтключенаДесериализацияFloatNaN

Уровень 1.0: команда CREATE TABLE не отфильтровала события с NaN (Not-a-Number, например, Infinity или -Infinity) в столбце типа FLOAT, потому что они выходят за рамки задокументированного диапазона для таких чисел.

Уровень 1.1. Команда CREATE TABLE позволяет задать жесткую схему. Обработчик Stream Analytics проверяет соответствие данных этой схеме. С помощью этой модели команда может фильтровать события со значениями NaN.

Отключение автоматического преобразования строк с датой и временем в тип DateTime при обработке JSON

Уровень 1.0. Средство синтаксического анализа JSON автоматически преобразует строковые значения со сведениями о дате, времени или часовом поясе в тип DATETIME, чтобы значение немедленно потеряло исходное форматирование и сведения о часовом поясе. Так как это делается на входе, даже если это поле не было использовано в запросе, оно преобразуется в дату и время в формате UTC.

Уровень 1.1. Нет автоматического преобразования строковых значений со сведениями о дате, времени или часовом поясе в тип DATETIME. В результате сохраняются сведения о часовом поясе и исходное форматирование. Однако, если поле NVARCHAR(MAX) используется в запросе как часть выражения DATETIME (например, функция DATEADD), оно преобразуется в тип DATETIME для выполнения вычислений и теряет исходную форму.

Следующие шаги