Tipi di dati Arrow e protocol buffer supportati

Questo documento descrive i tipi di dati Arrow e del protocollo supportati per ciascun rispettivo tipo di dati BigQuery. Prima di leggere questo documento, consulta la Panoramica dell'API BigQuery Storage Write.

Tipi di dati del buffer del protocollo supportati

La tabella seguente 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 (opzione preferita), int64, string

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

DATETIME, TIME string

Il valore deve essere un valore letterale DATETIME o 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 letterale TIME.

TIMESTAMP int64 (opzione preferita), int32, uint32, google.protobuf.Timestamp

Il valore è espresso in microsecondi dall'epoca Unix (01/01/1970).

INTERVAL string, google.protobuf.Duration

Il valore della stringa deve essere un letterale INTERVAL.

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 buffer del protocollo 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 confine illimitato. Nell'esempio seguente, f_range_date rappresenta una colonna RANGE in una tabella. Poiché il campo end non è impostato nel messaggio proto, il confine di fine 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 del record in BigQuery.

Tipi di dati Apache Arrow supportati

La tabella seguente 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 = Day
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 una precisione o una 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 UNBOUNDED.

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