Condividi tramite


Tipi di dati

✅ 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, ...) numeric: integer bigint dynamic, int, long
galleggiare float, real, decimal, numeric, all string types ( ntext, nvarchar, char, ...) numero: frazione precisione doppia, numerica. Limitato a 1,78E+308 dynamic, real, double
nvarchar(max) Tutti i tipi di stringa (ntext, nvarchar, char, uniqueidentifier...) corda carattere variabile, testo dynamic, string
datetime datetime, datetime2, datetimeoffset, tutti i tipi di stringa ( ntext, nvarchar, char, ...) 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, ...) 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