Уровень совместимости заданий 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 было insert или merge.

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

Поведение Upsert — insert или replace.

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 } из input1, в выходные данные1 записывается значение { "value": 1 }JSON .

Уровень 1.2: Azure Stream Analytics десериализует логическое значение в тип BIT. False сопоставляется с 0, а true — с 1. Сквозной запрос, например SELECT value INTO output1 FROM input1 чтение JSON { "value": true } из input1, записывает в output1 значение { "value": true }JSON . Вы можете привести значение к типу 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, размещенных с использованием среды IoT Edge. Поэтому, если задание размещено в IoT Edge, все имена полей преобразуются в нижний регистр.

FloatNaNDeserializationDisabled

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

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

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

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

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

Дальнейшие действия