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 i tipi di dati di GoogleSQL.
Tipi di dati SQL legacy
I dati possono includere i seguenti tipi di dati:
Tipo di dati | Valori possibili | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
STRINGA | Dati relativi ai caratteri a lunghezza variabile (UTF-8). | ||||||||||||
BYTES |
Dati binari a lunghezza variabile.
|
||||||||||||
INTERO |
Numero intero con segno a 64 bit. Se utilizzi l'API BigQuery per caricare un numero intero al di fuori dell'intervallo di [-253+1, 253-1] (nella maggior parte dei casi, questo significa maggiore di 9.007.199.254.740.991), in una colonna di numeri interi (INT64), devi trasmetterlo come stringa per evitare il danneggiamento dei dati. Questo problema è causato da una limitazione delle dimensioni dei numeri interi in JSON/ECMAScript. Per maggiori informazioni, consulta la sezione 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 la sezione Numeri esatti nell'SQL precedente. | ||||||||||||
GRANDE NUMERO | L'SQL precedente ha un supporto limitato per BIGNUMERIC. Per maggiori informazioni, consulta la sezione 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 date/ora del calendario. BigQuery archivia internamente i dati TIMESTAMP come timestamp UNIX con una precisione di microsecondi. Timestamp UNIX Un numero decimale positivo o negativo. Un numero positivo specifica il numero di secondi trascorsi 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 dei microsecondi). Stringhe di data e ora Una stringa di data e ora nel formato Puoi fornire uno scarto con fuso orario nelle stringhe di data e ora, ma BigQuery non conserva l'offset dopo aver convertito il valore nel suo formato interno. Se devi conservare i dati originali relativi al fuso orario, archivia la differenza di fuso orario in una colonna separata. Lo zero iniziale è obbligatorio quando specifichi uno scarto con fuso orario a una cifra. Se utilizzi il formato JSON, le stringhe di data e ora devono essere racchiuse tra virgolette. Esempi I seguenti esempi mostrano metodi identici per descrivere date specifiche, sia nei formati di timestamp UNIX che di data e ora.
|
||||||||||||
DATA | L'SQL precedente ha un supporto limitato per DATE. Per maggiori informazioni, consulta la pagina relativa al tempo civile in SQL precedente. | ||||||||||||
TEMPO | L'SQL precedente ha un supporto limitato per TIME. Per maggiori informazioni, consulta la pagina relativa al tempo civile in SQL precedente. | ||||||||||||
DATETIME | L'SQL precedente ha un supporto limitato per DATETIME. Per maggiori informazioni, consulta la pagina relativa al tempo civile in SQL precedente. |
Numeri esatti nell'SQL precedente
Puoi leggere 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
e campi passthrough in funzioni finestra e così via. Tuttavia, qualsiasi altro calcolo sui valori relativi all'ora 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, l'SQL precedente interpreta i valori dell'ora civile come numeri interi, mentre le operazioni su numeri interi che ritieni siano valori dell'ora civile producono risultati imprevisti.
Per calcolare valori utilizzando tipi di dati dell'ora civile, prendi in considerazione GoogleSQL, che supporta tutte le operazioni SQL nei 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 di GoogleSQL, consulta i tipi di dati.