Tipi di dati Arrow e protocol buffer supportati

Questo documento descrive i tipi di dati Arrow e protocol buffer supportati per ogni tipo di dati BigQuery. Prima di leggere questo documento, leggi la Panoramica dell'API BigQuery Storage Write.

Tipi di dati del buffer del protocollo supportati

La seguente tabella mostra i tipi di dati supportati nei buffer di protocollo e il formato di input corrispondente in BigQuery:

Tipo di dati BigQuery Tipi di buffer di protocollo supportati
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (preferito), int64, string

Il valore è il numero di giorni a partire dall'epoca Unix (1970-01-01). L'intervallo valido è compreso tra -719162 (01/01/0001) e 2932896 (31/12/9999).

DATETIME, TIME string

Il valore deve essere un DATETIME o un valore letterale TIME.

int64

Utilizza la classe CivilTimeEncoder per eseguire la conversione.

FLOAT double, float, google.protobuf.DoubleValue, google.protobuf.FloatValue
GEOGRAPHY string

Il valore è una geometria in formato WKT o GeoJSON.

INTEGER int32, int64, uint32, enum, google.protobuf.Int32Value, google.protobuf.Int64Value, google.protobuf.UInt32Value
JSON string
NUMERIC, BIGNUMERIC int32, int64, uint32, uint64, double, float, string
bytes, google.protobuf.BytesValue

Utilizza la classe BigDecimalByteStringEncoder per eseguire la conversione.

STRING string, enum, google.protobuf.StringValue
TIME string

Il valore deve essere un TIME letterale.

TIMESTAMP int64 (preferito), int32, uint32, google.protobuf.Timestamp

Il valore è espresso in microsecondi a partire dall'epoca Unix (1970-01-01).

INTERVAL string, google.protobuf.Duration

Il valore stringa deve essere un INTERVAL letterale.

RANGE<T> message

Un tipo di messaggio nidificato nel proto con due campi, start e end, in cui entrambi i campi devono essere dello stesso tipo di protocol buffer supportato che corrisponde a un tipo di dati BigQuery T. T deve essere DATE, DATETIME o TIMESTAMP. Se un campo (start o end) non è impostato nel messaggio proto, rappresenta un limite illimitato. Nell'esempio seguente, f_range_date rappresenta una colonna RANGE in una tabella. Poiché il campo end non è impostato nel messaggio proto, il limite finale di questo intervallo non è limitato.

{
  f_range_date: {
    start: 1
  }
}
REPEATED FIELD array

Un tipo di array nel proto corrisponde a un campo ripetuto in BigQuery.

RECORD message

Un tipo di messaggio nidificato nel proto corrisponde a un campo record in BigQuery.

Tipi di dati Apache Arrow supportati

La seguente tabella mostra i tipi di dati supportati in Apache Arrow e il formato di input corrispondente in BigQuery.

Tipo di dati BigQuery Tipi Apache Arrow supportati Parametri di tipo supportati
BOOL Boolean
BYTES Binary
DATE Date unità = giorno
String, int32
DATETIME Timestamp unit = MICROSECONDS

timezone è vuoto

FLOAT FloatingPoint Precisione in {SINGLE, DOUBLE}
GEOGRAPHY Utf8

Il valore è una geometria in formato WKT o GeoJSON.

INTEGER int bitWidth in {8, 16, 32, 64}

is_signed = false

JSON Utf8
NUMERIC Decimal128 Puoi fornire un valore NUMERIC con qualsiasi precisione o scala inferiore all' intervallo supportato da BigQuery.
BIGNUMERIC Decimal256 Puoi fornire un valore BIGNUMERIC con qualsiasi precisione o scala inferiore all' intervallo supportato da BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

INTERVAL Interval unit in {YEAR_MONTH, DAY_TIME, MONTH_DAY_NANO}
Utf8
RANGE<T> Struct

Lo struct Arrow deve avere due campi secondari denominati start e end.

Per la colonna RANGE<DATE>, i campi devono essere Tipo di freccia Date con unit=Day.

Per la colonna RANGE<DATETIME>, i campi devono essere il tipo di freccia Timestamp con unit=MICROSECONDS, senza il fuso orario.

Per RANGE<TIMESTAMP>, i campi devono essere Tipo di freccia Timestamp con unit=MICROSECONDS, timezone=UTC.

Un valore NULL in uno dei campi start e end verrà considerato come UNBOUNDED.

REPEATED FIELD List Un valore NULL deve essere rappresentato da un elenco vuoto.
RECORD Struct