Tipi di dati SQL legacy
Questo documento descrive in dettaglio i tipi di dati supportati dalla sintassi delle query SQL precedente di BigQuery. La sintassi delle query preferita per BigQuery è GoogleSQL. Per informazioni sui tipi di dati in GoogleSQL, consulta Tipi di dati di GoogleSQL.
Tipi di dati SQL legacy
I tuoi dati possono includere i seguenti tipi di dati:
Tipo di dati | Valori possibili | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRING | Dati con caratteri a lunghezza variabile (UTF-8). | ||||||||||||
BYTES |
Dati binari a lunghezza variabile.
|
||||||||||||
INTEGER |
Numero intero con firma a 64 bit. Se utilizzi l'API BigQuery per caricare un numero intero al di fuori dell'intervallo [-253+1, 253-1] (nella maggior parte dei casi, questo significa maggiore di 9.007.199.254.740.991) in una colonna di tipo intero (INT64), devi trasmetterlo come stringa per evitare il danneggiamento dei dati. Questo problema è causato da una limitazione delle dimensioni numeri interi in JSON/ECMAScript. Per maggiori informazioni, consulta la sezione dei numeri di RFC 7159. |
||||||||||||
FLOAT | Formato in virgola mobile a precisione doppia. | ||||||||||||
NUMERIC | L'SQL precedente ha un supporto limitato per NUMERIC. Per maggiori informazioni, consulta Numeri esatti nell'SQL precedente. | ||||||||||||
GRANDE NUMERO | L'SQL precedente ha un supporto limitato per BIGNUMERIC. Per maggiori informazioni, consulta Numeri esatti nell'SQL precedente. | ||||||||||||
BOOLEANO |
|
||||||||||||
RECORD | Una raccolta di uno o più altri campi. | ||||||||||||
TIMESTAMP |
Puoi descrivere i tipi di dati TIMESTAMP come timestamp UNIX o come data e ora del calendario. BigQuery archivia internamente i dati TIMESTAMP come timestamp UNIX con precisione in microsecondi. Timestamp UNIX Un numero decimale positivo o negativo. Un numero positivo specifica il numero di secondi dall'epoca (1970-01-01 00:00:00 UTC), mentre un numero negativo specifica il numero di secondi prima dell'epoca. Vengono mantenute fino a sei cifre decimali (precisione in microsecondi). Stringhe relative a data e ora Una stringa di data e ora nel formato Puoi fornire un offset di fuso orario nelle stringhe di data e ora, ma BigQuery non conserva l'offset dopo aver convertito il valore nel suo formato interno. Se hai bisogno di conservare i dati originali relativi al fuso orario, archivia lo scarto con il fuso orario in una colonna separata. Lo zero iniziale è obbligatorio quando specifichi uno scarto con fuso orario a una sola cifra. Se utilizzi il formato JSON, le stringhe di data e ora devono essere citate. Esempi I seguenti esempi mostrano modi identici per descrivere date specifiche, sia nel formato timestamp UNIX sia nella stringa data e ora.
|
||||||||||||
DATA | L'SQL precedente ha un supporto limitato per DATE. Per maggiori informazioni, consulta Tempo civile in SQL precedente. | ||||||||||||
TEMPO | L'SQL precedente ha un supporto limitato per TIME. Per maggiori informazioni, consulta Tempo civile in SQL precedente. | ||||||||||||
DATETIME | L'SQL precedente ha un supporto limitato per DATETIME. Per maggiori informazioni, consulta Tempo civile in SQL precedente. |
Numeri esatti nell'SQL precedente
Puoi leggere i valori NUMERIC o BIGNUMERIC in clausole non modificabili come
SELECT list (with aliases)
, GROUP BY keys
e campi passthrough nelle
funzioni finestra e così via. Tuttavia, qualsiasi calcolo su valori NUMERIC o
BIGNUMERIC, inclusi i confronti, produce risultati indefiniti.
Le seguenti funzioni di trasmissione e conversione sono supportate nell'SQL precedente:
CAST(<numeric> AS STRING)
CAST(<bignumeric> AS STRING)
CAST(<string> AS NUMERIC)
CAST(<string> AS BIGNUMERIC)
Ora civile in SQL precedente
Puoi leggere i tipi di dati relativi all'ora civile (DATE, TIME e
DATETIME) ed elaborarli con operatori non modificabili come
SELECT list (with aliases)
, GROUP BY keys
, campi pass-through nelle
funzioni finestra e così via. Tuttavia, qualsiasi altro calcolo basato su valori del tempo civile, inclusi i confronti, produce risultati non definiti.
Le seguenti funzioni di trasmissione e conversione sono supportate nell'SQL precedente:
CAST(<date> AS STRING)
CAST(<time> AS STRING)
CAST(<datetime> AS STRING)
CAST(<string> AS DATE)
CAST(<string> AS TIME)
CAST(<string> AS DATETIME)
In pratica, il codice SQL precedente interpreta i valori dell'ora civile come numeri interi, mentre le operazioni su numeri interi che ritieni siano valori del tempo civile producono risultati imprevisti.
Per calcolare i valori utilizzando tipi di dati dell'ora civile, prendi in considerazione GoogleSQL, che supporta tutte le operazioni SQL per i tipi di dati DATE, DATETIME e TIME.
Passaggi successivi
- Per impostare il tipo di dati di un campo utilizzando l'API, consulta
schema.fields.type
. - Per i tipi di dati GoogleSQL, consulta i tipi di dati.