Types de données Protocol Buffer et Arrow compatibles

Ce document décrit les types de données Protocol Buffer et Arrow compatibles pour chaque type de données BigQuery. Avant de lire ce document, consultez la Présentation de l'API BigQuery Storage en écriture (gRPC).

Types de données Protocol Buffer compatibles

Le tableau suivant indique les types de données compatibles dans les tampons de protocole et le format d'entrée correspondant dans BigQuery :

Type de données BigQuery Types de tampons de protocole compatibles
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (préféré), int64, string

La valeur représente le nombre de jours écoulés depuis l'époque Unix (1970-01-01). La plage valide est comprise entre -719162 (01/01/0001) et 2932896 (31/12/9999).

DATETIME, TIME string

La valeur doit être une valeur littérale DATETIME ou TIME.

int64

Utilisez la CivilTimeEncoder classe pour effectuer la conversion.

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

Cette valeur correspond à une géométrie au format WKT ou 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

Utilisez la BigDecimalByteStringEncoder classe pour effectuer la conversion.

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

La valeur doit être une TIME valeur littérale.

TIMESTAMP int64 (préféré), int32, uint32, google.protobuf.Timestamp

La valeur est donnée en microsecondes depuis l'époque Unix (1970-01-01).

INTERVAL string, google.protobuf.Duration

La valeur de chaîne doit être une valeur littérale INTERVAL.

RANGE<T> message

Type de message imbriqué dans le fichier proto avec deux champs, start et end, où les deux champs doivent être du même type de tampon de protocole compatible qui correspond à un type de données BigQuery T. T doit être défini sur DATE, DATETIME ou TIMESTAMP. Si un champ (start ou end) n'est pas défini dans le message proto, il représente une limite illimitée. Dans l'exemple suivant, f_range_date représente une colonne RANGE dans une table. Étant donné que le champ end n'est pas défini dans le message proto, la limite finale de cette plage est illimitée.

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

Un type de tableau dans le fichier proto correspond à un champ répété dans BigQuery.

RECORD message

Un type de message imbriqué dans le fichier proto correspond à un champ d'enregistrement dans BigQuery.

Types de données Apache Arrow compatibles

Le tableau suivant indique les types de données compatibles dans Apache Arrow et le format d'entrée correspondant dans BigQuery.

Type de données BigQuery Types Apache Arrow compatibles Paramètres de type compatibles
BOOL Boolean
BYTES Binary
DATE Date unit = Day
String, int32
DATETIME Timestamp unit = MICROSECONDS

timezone is empty

FLOAT FloatingPoint Précision dans {SINGLE, DOUBLE}
GEOGRAPHY Utf8

Cette valeur correspond à une géométrie au format WKT ou GeoJson.

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

is_signed = false

JSON Utf8
NUMERIC Decimal128 Vous pouvez fournir une valeur NUMERIC avec n'importe quelle précision ou échelle inférieure à la plage compatible avec BigQuery.
BIGNUMERIC Decimal256 Vous pouvez fournir une valeur BIGNUMERIC avec n'importe quelle précision ou échelle inférieure à la plage compatible avec BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

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

La structure Arrow doit comporter deux sous-champs nommés start et end.

Pour la colonne RANGE<DATE>, les champs doivent être de type Arrow Date avec unit=Day.

Pour la colonne RANGE<DATETIME>, les champs doivent être de type Arrow Timestamp avec unit=MICROSECONDS, sans fuseau horaire.

Pour la colonne RANGE<TIMESTAMP>, les champs doivent être de type Arrow Timestamp avec unit=MICROSECONDS, timezone=UTC.

Une valeur NULL dans l'un des champs start et end est traitée comme UNBOUNDED.

REPEATED FIELD List Une valeur NULL doit être représentée par une liste vide.
RECORD Struct