Tipi di dati di buffer di protocollo e Arrow supportati

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

Tipi di dati di buffer di 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 (preferito), int64, string

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

DATETIME, TIME string

Il valore deve essere un DATETIME o TIME valore letterale.

int64

Utilizza la CivilTimeEncoder classe 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 BigDecimalByteStringEncoder classe 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 valore letterale.

RANGE<T> message

Un tipo di messaggio nidificato nel proto con due campi, start e end, dove entrambi i campi devono essere dello stesso tipo di buffer di 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 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 è illimitato.

{
  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 tabella seguente mostra i tipi di dati supportati in Apache Arrow e il formato di input corrispondente in BigQuery.

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

timezone is empty

FLOAT FloatingPoint Precision 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

La struttura Arrow deve avere due sottocampi denominati start e end.

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

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

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

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

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