Types de données Protocol Buffer et Arrow compatibles

Ce document décrit les types de données de tampon de protocole 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.

Types de données Protocol Buffer compatibles

Le tableau suivant indique les types de données acceptés 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 (à privilégier), 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 (0001-01-01) et 2932896 (9999-12-31).

DATETIME, TIME string

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

int64

Utilisez la classe CivilTimeEncoder 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 classe BigDecimalByteStringEncoder pour effectuer la conversion.

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

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

TIMESTAMP int64 (rôle à privilégier), 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 un littéral 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 acceptés

Le tableau suivant présente 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 acceptés
BOOL Boolean
BYTES Binary
DATE Date unit = Day
String, int32
DATETIME Timestamp unit = MICROSECONDS

Le fuseau horaire est vide

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 un NUMERIC avec n'importe quelle précision ou échelle inférieure à la plage acceptée par BigQuery.
BIGNUMERIC Decimal256 Vous pouvez fournir un type BIGNUMERIC avec n'importe quelle précision ou échelle inférieure à la plage acceptée par 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 flèche Date avec unit=Day.

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

Pour RANGE<TIMESTAMP>, les champs doivent être de type flèche Timestamp avec unit=MICROSECONDS, timezone=UTC.

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

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