Livello di compatibilità per i processi di Analisi di flusso di Azure
Questo articolo descrive l'opzione di livello di compatibilità in Analisi di flusso di Azure.
Analisi di flusso è un servizio gestito, con aggiornamenti regolari delle funzionalità e miglioramenti costanti delle prestazioni. La maggior parte degli aggiornamenti dei runtime del servizio viene resa automaticamente disponibile agli utenti finali, indipendentemente dal livello di compatibilità. Tuttavia, quando una nuova funzionalità introduce una modifica nel comportamento dei processi esistenti o una modifica nel modo in cui i dati vengono utilizzati nei processi in esecuzione, viene introdotta questa modifica sotto un nuovo livello di compatibilità. È possibile mantenere in esecuzione i processi di Analisi di flusso esistenti senza modifiche importanti lasciando ridotta l'impostazione del livello di compatibilità. Quando si è pronti per i comportamenti di runtime più recenti, è possibile acconsentire esplicitamente aumentando il livello di compatibilità.
Scegliere un livello di compatibilità
Il livello di compatibilità controlla il comportamento di runtime di un processo di Analisi di flusso.
Analisi di flusso di Azure supporta attualmente tre livelli di compatibilità:
- 1.2 - Comportamento più recente con miglioramenti più recenti
- 1.1 - Comportamento precedente
- 1.0 - Livello di compatibilità originale introdotto durante la disponibilità generale di Analisi di flusso di Azure diversi anni fa.
Quando si crea un nuovo processo di Analisi di flusso, è consigliabile crearlo usando il livello di compatibilità più recente. Avviare la progettazione del processo in base ai comportamenti più recenti, per evitare modifiche aggiunte e complessità in un secondo momento.
Configurare il livello di compatibilità
È possibile impostare il livello di compatibilità per un processo di Analisi di flusso nel portale di Azure o usando la chiamata API REST del processo di creazione.
Per aggiornare il livello di compatibilità del processo nella portale di Azure:
- Usare il portale di Azure per individuare il processo di Analisi di flusso.
- Arrestare il processo prima di aggiornare il livello di compatibilità. Non è possibile aggiornare il livello di compatibilità se il processo si trova in uno stato in esecuzione.
- Nell'intestazione Configura selezionareLivello di compatibilità.
- Scegliere il valore del livello di compatibilità desiderato.
- Selezionare Salva nella parte inferiore della pagina.
Quando si aggiorna il livello di compatibilità, il compilatore T convalida il processo con la sintassi corrispondente al livello di compatibilità selezionato.
Livello di compatibilità 1.2
Le modifiche principali seguenti vengono introdotte nel livello di compatibilità 1.2:
Protocollo di messaggistica AMQP
1.2 livello: Analisi di flusso di Azure usa il protocollo di messaggistica AMQP (Advanced Message Queueing Protocol) per scrivere in code e argomenti del bus di servizio. AMQP consente di creare applicazioni ibride multipiattaforma usando un protocollo aperto standard.
Funzioni geospaziali
Livelli precedenti: Analisi di flusso di Azure ha usato i calcoli geography.
1.2 livello: Analisi di flusso di Azure consente di calcolare coordinate geografiche geometriche proiettate. Non esiste alcuna modifica nella firma delle funzioni geospaziali. Tuttavia, la semantica è leggermente diversa, consentendo un calcolo più preciso rispetto a prima.
Analisi di flusso di Azure supporta l'indicizzazione dei dati di riferimento geospaziali. I dati di riferimento contenenti elementi geospaziali possono essere indicizzati per un calcolo di join più veloce.
Le funzioni geospaziali aggiornate portano l'espressività completa del formato geospaziale (WKT). È possibile specificare altri componenti geospaziali non supportati in precedenza con GeoJson.
Per altre informazioni, vedere Aggiornamenti alle funzionalità geospaziali in Analisi di flusso di Azure - Cloud e IoT Edge.
Esecuzione di query parallele per le origini di input con più partizioni
Livelli precedenti: Le query di Analisi di flusso di Azure richiedono l'uso della clausola PARTITION BY per parallelizzare l'elaborazione delle query tra partizioni di origine di input.
1.2 livello: Se la logica di query può essere parallelizzata tra partizioni di origine di input, Analisi di flusso di Azure crea istanze di query separate ed esegue calcoli in parallelo.
Integrazione dell'API bulk nativa con l'output di Azure Cosmos DB
Livelli precedenti: Il comportamento upsert è stato inserito o unione.
1.2 livello: L'integrazione dell'API bulk nativa con l'output di Azure Cosmos DB ottimizza la velocità effettiva e gestisce in modo efficiente le richieste di limitazione delle richieste. Per altre informazioni, vedere la pagina Output di Analisi di flusso di Azure nella pagina Azure Cosmos DB.
Il comportamento upsert è inserito o sostituito.
DateTimeOffset durante la scrittura nell'output SQL
I livelli precedenti:Tipi DateTimeOffset sono stati modificati in UTC.
1.2 livello: DateTimeOffset non viene più modificato.
Tempo lungo durante la scrittura nell'output SQL
Livelli precedenti: I valori sono stati troncati in base al tipo di destinazione.
1.2 livello: I valori che non rientrano nel tipo di destinazione vengono gestiti in base ai criteri di errore di output.
Serializzazione dei record e della matrice durante la scrittura nell'output SQL
Livelli precedenti: I record sono stati scritti come "Record" e matrici sono stati scritti come "Array".
1.2 livello: I record e le matrici vengono serializzati in formato JSON.
Convalida rigorosa del prefisso delle funzioni
Livelli precedenti: Non è stata eseguita alcuna convalida rigorosa dei prefissi delle funzioni.
1.2 livello: Analisi di flusso di Azure ha una convalida rigorosa dei prefissi delle funzioni. L'aggiunta di un prefisso a una funzione predefinita causa un errore. Ad esempio,myprefix.ABS(…)
non è supportato.
L'aggiunta di un prefisso alle aggregazioni predefinite genera anche un errore. Ad esempio, myprefix.SUM(…)
non è supportato.
L'uso del prefisso "system" per le funzioni definite dall'utente genera un errore.
Disallow Array and Object as key properties in Azure Cosmos DB output adapter (Disallow Array and Object as key properties in Azure Cosmos DB output adapter)
Livelli precedenti: I tipi array e Object sono stati supportati come proprietà chiave.
1.2 livello: I tipi array e Object non sono più supportati come proprietà chiave.
Deserializzazione del tipo booleano in JSON, AVRO e PARQUET
Livelli precedenti: Analisi di flusso di Azure deserializza il valore booleano nel tipo BIGINT: false esegue il mapping a 0 e true a 1. L'output crea solo valori booleani in JSON, AVRO e PARQUET se si converte in modo esplicito gli eventi in BIT.
Ad esempio, una query pass-through come SELECT value INTO output1 FROM input1
la lettura di un codice JSON { "value": true }
dall'input1 scriverà in output1 un valore { "value": 1 }
JSON.
1.2 livello: Analisi di flusso di Azure deserializza il valore booleano nel tipo BIT. False esegue il mapping a 0 e true a 1. Una query pass-through come SELECT value INTO output1 FROM input1
la lettura di un codice JSON { "value": true }
dall'input1 scriverà nell'output1 un valore { "value": true }
JSON. È possibile eseguire il cast del valore per digitare BIT nella query per assicurarsi che vengano visualizzati come true e false nell'output per i formati che supportano il tipo booleano.
Livello di compatibilità 1.1
Nel livello di compatibilità 1.1 sono state introdotte le modifiche sostanziali seguenti:
Formato XML del bus di servizio
1.0 livello: Analisi di flusso di Azure usa DataContractSerializer, quindi il contenuto del messaggio include tag XML. Ad esempio:
@\u0006string\b3http://schemas.microsoft.com/2003/10/Serialization/\u0001{ "SensorId":"1", "Temperature":64\}\u0001
1.1 livello: Il contenuto del messaggio contiene il flusso direttamente senza tag aggiuntivi. ad esempio { "SensorId":"1", "Temperature":64}
Distinzione maiuscole/minuscole persistente nei nomi dei campi
1.0 livello: I nomi dei campi sono stati modificati in minuscolo quando elaborati dal motore di Analisi di flusso di Azure.
1.1 livello: la distinzione tra maiuscole e minuscole viene mantenuta per i nomi dei campi quando vengono elaborati dal motore di Analisi di flusso di Azure.
Nota
La distinzione tra maiuscole e minuscole persistente non è ancora disponibile per i processi di Analisi di flusso ospitati in un ambiente di dispositivo perimetrale. Se il processo è ospitato in un dispositivo perimetrale, quindi, tutti i nomi di campo vengono convertiti in caratteri minuscoli.
FloatNaNDeserializationDisabled
1.0 livello: Il comando CREATE TABLE non ha filtrato gli eventi con NaN (Not-a-Number). Ad esempio, Infinity, -Infinity) in un tipo di colonna FLOAT perché sono fuori dall'intervallo documentato per questi numeri.
1.1 livello: CREATE TABLE consente di specificare uno schema sicuro. Il motore di Analisi di flusso convalida la conformità dei dati a questo schema e, con questo modello, il comando può filtrare anche eventi contrassegnati con valori NaN.
Disabilitare la conversione automatica delle stringhe datetime al tipo DateTime in ingresso per JSON
1.0 livello: Il parser JSON converte automaticamente i valori stringa con informazioni di data/ora/fuso orario nel tipo DATETIME in ingresso, pertanto il valore perde immediatamente le informazioni di formattazione e fuso orario originali. Poiché questa operazione viene eseguita in ingresso, anche se tale campo non è stato usato nella query, viene convertito in DateTime UTC.
1.1 livello: Non esiste alcuna conversione automatica dei valori stringa con informazioni di data/ora/fuso orario nel tipo DATETIME. Di conseguenza, le informazioni sul fuso orario e la formattazione originale vengono mantenute. Tuttavia, se il campo NVARCHAR(MAX) viene usato nella query come parte di un'espressione DATETIME (funzione DATEADD, ad esempio), viene convertito in tipo DATETIME per eseguire il calcolo e perde il formato originale.