Nível de compatibilidade para trabalhos do Azure Stream Analytics
Este artigo descreve a opção de nível de compatibilidade no Azure Stream Analytics.
O Azure Stream Analytics é um serviço gerenciado, com atualizações de recursos e melhorias de desempenho constantes. A maioria das atualizações de runtimes é disponibilizada automaticamente para os usuários finais, independentemente do nível de compatibilidade. No entanto, quando uma nova funcionalidade apresenta uma alteração no comportamento de trabalhos existentes ou uma alteração na maneira como os dados são consumidos em trabalhos em execução, apresentamos essa alteração em um novo nível de compatibilidade. Você pode manter os trabalhos atuais do Stream Analytics em execução sem alterações importantes, deixando a configuração de nível de compatibilidade reduzida. Quando estiver pronto para os comportamentos de runtime mais recentes, você poderá optar por aumentar o nível de compatibilidade.
Escolher um nível de compatibilidade
O nível de compatibilidade controla o comportamento de runtime de um trabalho do Stream Analytics.
Atualmente, o Azure Stream Analytics permite dois níveis de compatibilidade:
- 1.2: comportamento mais recente com melhorias mais recentes
- 1.1: comportamento anterior
- 1.0: nível de compatibilidade original, introduzido durante a disponibilidade geral do Azure Stream Analytics há vários anos.
Quando você cria um novo trabalho do Stream Analytics, é uma melhor prática criá-lo usando o nível de compatibilidade mais recente. Inicie seu projeto de trabalho contando com os comportamentos mais recentes para evitar alterações e complexidade adicionais posteriormente.
Definir o nível de compatibilidade
Você pode definir o nível de compatibilidade de um trabalho do Stream Analytics usando o portal do Azure ou a criação da chamada à API REST do trabalho.
Para atualizar o nível de compatibilidade do trabalho no portal do Azure:
- Localize o seu trabalho do Stream Analytics no portal do Azure.
- Pare o trabalho antes de atualizar o nível de compatibilidade. Não será possível atualizar o nível de compatibilidade se o trabalho estiver em um estado de execução.
- No cabeçalho Configurar, escolha Nível de compatibilidade.
- Escolha o valor do nível de compatibilidade desejado.
- Escolha Salvar na parte inferior da página.
Quando você atualizar o nível de compatibilidade, o compilador do T validará o trabalho com a sintaxe que corresponde ao nível de compatibilidade selecionado.
Nível de compatibilidade 1.2
As alterações principais a seguir são apresentadas no nível de compatibilidade 1.2:
Protocolo de mensagens AMQP
Nível 1.2: o Azure Stream Analytics usa o protocolo de mensagens Advanced Message Queueing Protocol (AMQP) para gravar em filas e tópicos do barramento de serviço. O AMQP permite que você crie várias plataformas, aplicativos híbridos usando um protocolo de padrão aberto.
Funções geoespaciais
Níveis anteriores: o Azure Stream Analytics usava cálculos de Geografia.
Nível 1.2: o Azure Stream Analytics permite calcular coordenadas geográficas projetadas geométricas. Não há alterações na assinatura das funções geoespaciais. No entanto, sua semântica é um pouco diferente, permitindo um cálculo mais preciso do que antes.
O Azure Stream Analytics permite indexação de dados de referência geoespaciais. Os dados de referência contendo elementos geoespaciais podem ser indexados para um cálculo de junção mais rápido.
As funções geoespaciais atualizadas trazem a expressividade completa do formato geoespacial Well Known Text (WKT). Você pode especificar outros componentes geoespaciais que anteriormente não eram compatíveis com o GeoJson.
Para obter mais informações, confira Atualizações para recursos geoespaciais no Azure Stream Analytics – Cloud e IoT Edge.
Execução de consulta paralela para fontes de entrada com várias partições
Níveis anteriores: as consultas do Azure Stream Analytics exigiam o uso da cláusula PARTITION BY para paralelizar o processamento da consulta nas partições de origem de entrada.
Nível 1.2: se a lógica da consulta puder ser paralelizada entre as partições de origem de entrada, o Azure Stream Analytics criará instâncias de consulta separadas e executará cálculos em paralelo.
Integração da API em massa nativa com a saída do Azure Cosmos DB
Níveis anteriores: o comportamento de upsert era inserir ou mesclar.
Nível 1.2: a integração da API em massa nativa com a saída do Azure Cosmos DB maximiza a taxa de transferência e lida com eficiência com as solicitações de limitação. Para obter mais informações, confira Saída do Azure Stream Analytics para a página do Azure Cosmos DB.
O comportamento de upsert é inserir ou substituir.
DateTimeOffset ao gravar na saída do SQL
Níveis anteriores: os tipos DateTimeOffset eram ajustados para UTC.
Nível 1.2: DateTimeOffset não está mais ajustado.
Longo ao gravar na saída do SQL
Níveis anteriores: os valores eram truncados com base no tipo de destino.
Nível 1.2: os valores que não se ajustam ao tipo de destino são tratados de acordo com a política de erro de saída.
Registro e serialização de matriz ao gravar na saída do SQL
Níveis anteriores: os registros foram gravados como "registro" e as matrizes foram gravadas como "matriz".
Nível 1.2: os registros e as matrizes são serializados no formato JSON.
Validação estrita do prefixo das funções
Níveis anteriores: não havia validação estrita dos prefixos de função.
Nível 1.2: o Azure Stream Analytics tem uma validação estrita dos prefixos de função. A adição de um prefixo a uma função interna causa um erro. Por exemplo, myprefix.ABS(…)
não é compatível.
Adicionar um prefixo a agregações internas também resulta em erro. Por exemplo, myprefix.SUM(…)
não é compatível.
O uso do prefixo "system" para qualquer função definida pelo usuário resulta em erro.
Não permitir matriz e objeto como propriedades de chave no adaptador de saída do Azure Cosmos DB
Níveis anteriores: os tipos de objeto e de matriz eram compatíveis como uma propriedade de chave.
Nível 1.2: os tipos de objeto e de matriz não são mais compatíveis como uma propriedade de chave.
Desserializando o tipo booliano em JSON, AVRO e PARQUET
Níveis anteriores: O Azure Stream Analytics desserializa o valor booliano no tipo BIGINT – false mapeia para 0 e true mapeia para 1. A saída só criará valores boolianos em JSON, AVRO e PARQUET se você converter explicitamente eventos em BIT.
Por exemplo, uma consulta de passagem como SELECT value INTO output1 FROM input1
lendo um JSON { "value": true }
de input1 gravará no output1 um valor JSON { "value": 1 }
.
Nível 1.2: O Azure Stream Analytics desserializa o valor booliano no tipo BIT. False mapeia para 0 e true mapeia para 1. Uma consulta de passagem, como SELECT value INTO output1 FROM input1
lendo um JSON { "value": true }
de input1 gravará no output1 um valor JSON { "value": true }
. Você pode converter valor para o tipo BIT na consulta para garantir que eles apareçam como verdadeiros e falsos na saída para formatos que dão suporte ao tipo booliano.
Nível de compatibilidade 1.1
As alterações principais a seguir são apresentadas no nível de compatibilidade 1.1:
Formato XML do Barramento de Serviço
Nível 1.0: o Azure Stream Analytics usava o DataContractSerializer e, por isso, o conteúdo da mensagem incluía marcas XML. Por exemplo:
@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/\u0001{ "SensorId":"1", "Temperature":64\}\u0001
Nível 1.1: o conteúdo da mensagem contém o fluxo diretamente sem marcas adicionais. Por exemplo: { "SensorId":"1", "Temperature":64}
Diferenciação de maiúsculas e minúsculas persistente para nomes de campos
Nível 1.0: os nomes de campos foram alterados para letras minúsculas quando processados pelo mecanismo do Azure Stream Analytics.
Nível 1.1: a diferenciação entre maiúsculas e minúsculas é mantida para nomes de campos quando eles são processados pelo mecanismo do Azure Stream Analytics.
Observação
Diferenciação de maiúsculas e minúsculas persistente ainda não está disponível para trabalhos de Análise de Fluxo hospedados usando o ambiente do Edge. Como resultado, todos os nomes de campo são convertidos em minúsculas se o trabalho estiver hospedado no Edge.
FloatNaNDeserializationDisabled
Nível 1.0: o comando CREATE TABLE não filtrou eventos com NaN (valor que não é um número. Por exemplo, Infinito, -Infinito) em um tipo de coluna FLOAT porque eles estão fora do intervalo documentado para esses números.
Nível 1.1: CREATE TABLE permite especificar um esquema forte. O mecanismo do Stream Analytics valida que os dados estão em conformidade com este esquema. Com esse modelo, o comando pode filtrar eventos com valores NaN.
Desabilitar a conversão automática de cadeias de caracteres DateTime para o tipo DateTime na entrada para JSON
Nível 1.0: o analisador JSON convertia automaticamente os valores de cadeia de caracteres com informações de data/hora/zona no tipo DATETIME na entrada, de maneira que o valor perdia imediatamente sua formatação original e as informações de fuso horário. Como isso é feito na entrada, mesmo que esse campo não seja usado na consulta, ele é convertido em DateTime UTC.
Nível 1.1: não há conversão automática de valores de cadeia de caracteres com informações de data/hora/zona para o tipo DATETIME. Como resultado, as informações de fuso horário e a formatação original são mantidas. No entanto, se o campo NVARCHAR (MAX) for usado na consulta como parte de uma expressão DATETIME (função DATEADD, por exemplo), ele será convertido no tipo DATETIME para executar o cálculo e perderá seu formato original.