Share via


Alterações futuras nas regras de nivelamento e de escape de JSON para novos ambientes

Observação

O serviço TSI (Time Series Insights) não terá mais suporte após março de 2025. Considere migrar os ambientes existentes do TSI para soluções alternativas assim que possível. Para obter mais informações sobre a substituição e migração, acesse nossa documentação.

Importante

As alterações serão aplicadas apenas aos ambientes criados recentemente do Microsoft Azure Time Series Insights Gen2. As alterações não se aplicam aos ambientes Gen1.

O ambiente do Azure Time Series Insights Gen2 cria dinamicamente colunas de armazenamento, seguindo um conjunto específico de convenções de nomenclatura. Quando um evento é ingerido, o Time Series Insights aplica um conjunto de regras ao conteúdo JSON e aos nomes de propriedades. Alterações no nivelamento e armazenamento de dados JSON entraram em vigor em julho de 2020 para ambientes novos do Azure Time Series Insights Gen2. Essa alteração afeta você nos seguintes casos:

  • O conteúdo de JSON contém objetos aninhados.
  • O conteúdo de JSON contém matrizes.
  • Você usa algum dos quatro caracteres especiais a seguir no nome de uma propriedade JSON: [\.'
  • Uma ou mais das propriedades de ID de TS (série temporal) estão dentro de um objeto aninhado.

Se você criar um ambiente, e a carga do evento se encaixar em uma ou mais das situações acima, os dados serão nivelados e armazenados de maneira diferente. A tabela a seguir resume as mudanças:

Regra atual Nova regra JSON de exemplo Nome da coluna anterior Nome da nova coluna
Para nivelar JSON aninhado, você usa o caractere de sublinhado como delineador. Para nivelar JSON aninhado, você usa o ponto final como delineador. {"series" : { "value" : 19.338 }} series_value_double series.value_double
Não é feito o escape de caracteres especiais. O escape dos nomes de propriedades JSON que incluem os caracteres especiais .[\ e ' é feito usando [' e ']. Em [' e '], há o escape adicional de aspas simples e barras invertidas. A aspa simples é escrita como \', e a barra invertida, como \\. "Foo's Law Value": "17.139999389648" Foo's Law Value_double ['Foo\'s Law Value']_double
As matrizes de primitivos são armazenadas como uma cadeia de caracteres. As matrizes de tipos primitivos são armazenadas como um tipo dinâmico. "values": [154, 149, 147] values_string values_dynamic
As matrizes de objetos são sempre niveladas, produzindo vários eventos. Se os objetos na matriz não tiverem as propriedades ID de TS ou carimbo de data/hora, a matriz de objetos será totalmente armazenada como um tipo dinâmico. "values": [{"foo" : 140}, {"bar" : 149}] values_foo_long | values_bar_long values_dynamic

Se propriedade de ID de TS e/ou de carimbo de data/hora está aninhada em um objeto

As novas implantações precisam seguir as novas regras de ingestão. Por exemplo, se a ID de TS é telemetry_tagId, você precisa atualizar todos os modelos do Azure Resource Manager ou scripts de implantação automatizados para configurar telemetry.tagId como a ID de TS do ambiente. Você também precisa fazer essa alteração em carimbos de data/hora de origem de evento em JSON aninhado.

Se o conteúdo contém caracteres JSON ou especiais aninhados, e você automatiza a criação de expressões de variável do modelo de série temporal

Atualize o código do cliente que executa o TypesBatchPut de acordo com as novas regras de ingestão. Por exemplo, você deve atualizar uma expressão de série temporal anterior de para uma das seguintes opções:

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

Próximas etapas