Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
✅ Flusso di eventi dell'infrastruttura di Analisi ✅ di flusso di Azure
Ogni record ha un tipo di dati correlato. Un tipo di dati descrive (e vincola) il set di valori che un record di tale tipo può contenere o un'espressione di tale tipo può produrre.
Si noti che si tratta di record con un tipo e non colonne. Ogni record di una colonna può avere un tipo diverso. Se questo sarà trasparente per la maggior parte delle applicazioni, consente una gestione semplice di scenari di deriva dello schema e altri modelli di digitazione insoliti.
Tipi di dati supportati
Di seguito è riportato l'elenco dei tipi di dati supportati.
Tipo di dati | Descrizione |
---|---|
bigint | Numeri interi compresi nell'intervallo -2^63 (-9.223.372.036.854.775.808) a 2^63-1 (9.223.372.036.854.775.807). |
galleggiare | Numeri a virgola mobile nell'intervallo da 1,79E+308 a -2,23E-308, 0 e 2,23E-308 a 1,79E+308. I valori decimali a virgola mobile in genere non hanno una rappresentazione binaria esatta. È possibile riscontrare una perdita di precisione. Questo non è specifico di Analisi di flusso di Azure, ma si verifica in tutte le implementazioni di numeri a virgola mobile. |
nvarchar(max) | Valori di testo, costituiti da caratteri Unicode. Nota: non è supportato un valore diverso da max. |
data e ora | Definisce una data combinata con un'ora del giorno con secondi frazionari (7 cifre, precisione di 100 nanosecondi) basata su un orologio di 24 ore e rispetto all'ora UTC (offset di fuso orario 0). |
pezzo | Intero che può accettare un valore pari a 1, 0 o NULL. Questo è supportato nel livello di compatibilità 1.2 e versioni successive. |
Registrazione | Set di coppie nome/valore. I valori devono essere di tipo di dati supportato. |
elenco | Raccolta ordinata di valori. I valori devono essere di tipo di dati supportato. |
È possibile eseguire un join su (o confrontare) un tipo di dati bigint e float. Funziona correttamente in tutti i casi, ad eccezione del caso dei valori bigint molto grandi che non possono essere rappresentati.
Annotazioni
Quando si leggono tipi di dati bigint all'esterno dell'intervallo, Analisi di flusso di Azure supporta, il processo di Analisi di flusso non riesce a deserializzare gli eventi con il messaggio di errore InputDeserializationError. È possibile pre-elaborare i dati e convertirli in stringa. Un'opzione consiste nell'usare funzioni di Azure per pre-elaborare i dati e convertire numeri interi di grandi dimensioni in stringhe.
Conversioni di tipo
Queste sono le regole che regolano le conversioni dei tipi di dati:
- La conversione senza perdita di precisione durante le operazioni di lettura e scrittura dell'output di input è implicita e ha sempre esito positivo
- La perdita di precisione e l'overflow all'interno delle operazioni di scrittura di output vengono gestite da criteri di errore configurati (impostati su Drop o Retry)
- Gli errori di conversione dei tipi che si verificano durante le operazioni di scrittura dell'output vengono gestiti dai criteri di errore
- Gli errori di conversione dei tipi che si verificano durante le operazioni di lettura dell'input causano l'eliminazione dell'evento da parte del processo
Una perdita di precisione può verificarsi durante la conversione dei valori in float. Non è specifico di Analisi di flusso di Azure, ma del tipo di dati float in generale. Di conseguenza, non viene considerato un errore. Nel caso in cui ogni cifra debba essere conservata, i dati devono essere letti come stringa.
Cast dei dati
Nel linguaggio SQL di streaming sono disponibili quattro funzioni utili per osservare e regolare il tipo di dati.
- CAST : esegue il cast di una singola colonna a un determinato tipo. Il processo avrà esito negativo in caso di errore di conversione
-
TRY_CAST : eseguire il cast di una singola colonna a un determinato tipo. Gli errori vengono visualizzati come NULL. Vedere convalida dell'input per informazioni su come usare al meglio
TRY_CAST
- CREATE TABLE : definire un singolo schema esplicito in un input. Le righe con errori di conversione vengono rimosse dal flusso
- GetType : restituisce il tipo di una colonna
Per la maggior parte dei casi d'uso, l'opzione consigliata consiste nell'usare TRY_CAST. Questa funzione protegge l'elaborazione downstream assicurando il tipo di output, impedendo al contempo la perdita di dati sostituendo il valore in errore da NULL. La riga non viene eliminata e tale valore originale può comunque essere proiettato in un'altra colonna.
Per garanzie solide, l'opzione consigliata consiste nell'usare CREATE TABLE. Questo approccio consente di informare il processo dello schema di un determinato input, senza rischi di deviazione. Il compromesso è che solo un singolo schema può essere definito in un determinato input e le righe non conformi verranno eliminate.
Se possibile, tutte le operazioni di cast devono essere eseguite in modo esplicito tramite queste funzioni, anziché in modo implicito (invisibile all'utente) in altre funzioni. In questo modo si evitano mancate corrispondenze di tipo, comportamenti imprevisti ed errori di inserimento per output fortemente tipizzato come i database SQL. Per informazioni su come proteggere la logica di query principale da tali errori, vedere Convalida dell'input .
Conversione in bit
I valori verranno convertiti tra float e bit con le regole seguenti:
Da | Per |
---|---|
(BIT) 1 | (FLOAT) 1.0 |
(BIT) 0 | (FLOAT) 0.0 |
(BIT) NULLO | (FLOAT) NULLO |
(FLOAT) 0.0 | (BIT) 0 |
(FLOAT) qualsiasi altro valore | (BIT) 1 |
(FLOAT) NULLO | (BIT) NULLO |
Mapping dei tipi e formati di serializzazione
Tipo di dati | CSV in | Csv out | JSON in | Json out | Avro in | Avro out |
---|---|---|---|---|---|---|
bigint | stringa convertita in intero con segno a 64 bit | Intero con segno a 64 bit convertito in stringa usando le impostazioni cultura del processo | numero: intero convertito in intero con segno a 64 bit; Valore booleano: nel livello di compatibilità 1.1 e inferiore a "false" viene convertito in 0, "true" viene convertito in 1 |
number: integer | long e int convertito in intero con segno a 64 bit; Boolean: nel livello di compatibilità 1.1 e inferiore a false viene convertito in 0, true viene convertito in 1 |
lungo |
galleggiare | stringa convertita in numero di virgola mobile con segno a 64 bit | Numero di virgola mobile con segno a 64 bit convertito in stringa usando le impostazioni cultura del processo | numero: frazione convertita in numero di virgola mobile con segno a 64 bit | numero: frazione | double e float convertito in numero di virgola mobile con segno a 64 bit | doppio |
nvarchar(max) | corda | corda | corda | corda | corda | corda |
datetime | stringa convertita in datetime dopo lo standard ISO 8601 | stringa che usa lo standard ISO 8601 | stringa convertita in datetime dopo lo standard ISO 8601 | datetime convertito in stringa usando lo standard ISO 8601 | stringa convertita in datetime dopo lo standard ISO 8601 | datetime convertito in stringa usando lo standard ISO 8601 |
bit (livello di compatibilità 1.2 e versioni successive) | stringa "true", "false" o "null" viene convertita in valore intero 1, 0 o null corrispondentemente | convertito in stringa "true" o "false" | Boolean: "false" viene convertito in 0, "true" viene convertito in 1 | Valore booleano: valore booleano | Boolean: false viene convertito in 0, true viene convertito in 1 | booleano |
registra | Non disponibile | Non supportata, viene restituita la stringa "Record" | Oggetto JSON | Oggetto JSON | Tipo di record Avro | Tipo di record Avro |
array | Non disponibile | Non supportata, viene restituita la stringa "Array" | Oggetto JSON | Oggetto JSON | Tipo di record Avro | Tipo di record Avro |
Annotazioni
Per Parquet non è necessaria alcuna conversione dei tipi di dati.
Mapping dei tipi durante la scrittura in archivi dati strutturati
Tipo di dati | SQL | Power BI | Azure Cosmos DB, un servizio di database distribuito globale di Microsoft | PostgreSQL | Esplora dati di Azure |
---|---|---|---|---|---|
bigint | bigint, int, smallint, tinyint, tutti i tipi di stringa (ntext, nvarchar, char, ...) | Sì | numeric: integer | bigint | dynamic, int, long |
galleggiare | float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) | Sì | numero: frazione | precisione doppia, numerica. Limitato a 1,78E+308 | dynamic, real, double |
nvarchar(max) | Tutti i tipi di stringa (ntext, nvarchar, char, uniqueidentifier...) | Sì | corda | carattere variabile, testo | dynamic, string |
datetime | datetime, datetime2, datetimeoffset, tutti i tipi di stringa ( ntext, nvarchar, char, ...) | Sì | datetime convertito in stringa usando lo standard ISO 8601 | timestamp, ora. Opzione fuso orario supportata, ma non verrà fornito alcun fuso orario | dynamic, string, datetime |
bit (livello di compatibilità 1.2 e versioni successive) | bigint, int, smallint, tinyint, bit, tutti i tipi di stringa (ntext, nvarchar, char, ...) | Sì | boolean: 1 viene convertito in true, 0 convertito in false | pezzo | dynamic, bool |
registra | Non supportata, viene restituita la stringa "Record" | Non supportata, viene restituita la stringa "Record" | Oggetto JSON | Non supportato | dynamic, bool, long, datetime, byte array, real, double, string |
array | Non supportata, viene restituita la stringa "Array" | Non supportata, viene restituita la stringa "Array" | Oggetto JSON | Non supportato | dynamic, string |