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


Предстоящие изменения в правилах выравнивания и экранирования JSON для новых сред

Примечание.

Служба временных рядов Аналитика будет прекращена 7 июля 2024 года. Рассмотрите возможность переноса существующих сред в альтернативные решения как можно скорее. Дополнительные сведения об устаревании и миграции см. в нашей документации.

Внимание

Эти изменения будут применяться только к новым создаваемым средам Аналитики временных рядов Azure 2-го поколения. Изменения не будут применяться к средам 1-го поколения.

Среда Аналитики временных рядов Azure 2-го поколения динамически создает столбцы хранилища согласно определенному набору соглашений об именовании. Когда принимается событие, Аналитика временных рядов применяет набор правил к полезной нагрузке JSON и именам свойств. Изменения в порядке выравнивания и сохранения данных JSON вступают в силу в новых средах Аналитики временных рядов Azure 2-го поколения в июле 2020 г. Это изменение влияет на работу в следующих ситуациях:

  • Полезные данные JSON содержат вложенные объекты.
  • Полезные данные JSON содержат массивы.
  • В имени свойства JSON используется любой из следующих четырех специальных символов: [\.'
  • Одно свойство или несколько идентификатора временных рядов (TS) находятся во вложенном объекте.

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

Текущее правило Новое правило Пример JSON Имя предыдущего столбца Имя нового столбца
Вложенный JSON выравнивается с использованием подчеркивания в качестве разделителя. Вложенный JSON выравнивается с использованием точки в качестве разделителя. {"series" : { "value" : 19.338 }} series_value_double series.value_double
Специальные знаки не экранируются. Имена свойств JSON, которые включают специальные символы .[\ и ' экранируются с помощью [' и .'] Между [' и '] выполняется дополнительное экранирование одиночных кавычек и обратных косых черт. Одинарная кавычка записывается как \', а обратная косая черта — как \\. "Foo's Law Value": "17.139999389648" Foo's Law Value_double ['Foo\'s Law Value']_double
Массивы примитивов хранятся в виде строки. Массивы типов примитивов хранятся в виде динамического типа. "values": [154, 149, 147] values_string values_dynamic
Массивы объектов всегда выравниваются, так что создается несколько событий. Если объекты в массиве не имеют идентификатора TS или метки времени, массив объектов сохраняется полностью как динамический тип. "values": [{"foo" : 140}, {"bar" : 149}] values_foo_long | values_bar_long values_dynamic

Если идентификатор TS и (или) свойство метки времени вложены в объект,

все новые развертывания должны соответствовать новым правилам приема. Например, если идентификатором TS является telemetry_tagId, вам нужно обновить все шаблоны Azure Resource Manager или скрипты автоматического развертывания, чтобы настроить telemetry.tagId как идентификатор TS среды. Это изменение также требуется для меток времени источника события во вложенном JSON.

Если полезные данные содержат вложенный JSON или специальные символы и автоматизируют создание выражений переменной Модель временных рядов,

обновите код клиента, который выполняет TypesBatchPut в соответствии с новыми правилами приема. Например, необходимо обновить предыдущее выражение временного ряда"value": {"tsx": "$event.series_value.Double"} одним из следующих способов.

  • "value": {"tsx": "$event.series.value.Double"}
  • "value": {"tsx": "$event['series']['value'].Double"}

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