Unterstützte Protokollzwischenspeicher- und Arrow-Datentypen

In diesem Dokument werden die unterstützten Protokollpuffer- und Arrow-Datentypen für jeden BigQuery-Datentyp beschrieben. Bevor Sie dieses Dokument lesen, sollten Sie die Übersicht über die BigQuery Storage Write API lesen.

Unterstützte Datentypen für Protokollzwischenspeicher

In der folgenden Tabelle sind die unterstützten Datentypen in Protokoll-Buffers und das entsprechende Eingabeformat in BigQuery aufgeführt:

BigQuery-Datentyp Unterstützte Protokollzwischenspeichertypen
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (bevorzugt), int64, string

Der Wert ist die Anzahl der Tage seit der Unix-Epoche (1970-01-01). Der Gültigkeitsbereich liegt zwischen -719162 (0001-01-01) und 2932896 (9999-12-31).

DATETIME, TIME string

Der Wert muss ein DATETIME- oder TIME-Literal sein.

int64

Verwenden Sie die Klasse CivilTimeEncoder, um die Konvertierung durchzuführen.

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

Der Wert ist eine Geometrie im WKT- oder GeoJson-Format.

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

Verwenden Sie die Klasse BigDecimalByteStringEncoder, um die Konvertierung durchzuführen.

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

Der Wert muss ein TIME-Literal sein.

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

Der Wert wird in Mikrosekunden seit der Unix-Epoche (1970-01-01) angegeben.

INTERVAL string, google.protobuf.Duration

Der Stringwert muss ein INTERVAL-Literal sein.

RANGE<T> message

Ein verschachtelter Nachrichtentyp in der Proto-Datei mit den zwei Feldern start und end, wobei beide Felder denselben unterstützten Protokollzwischenspeicher haben müssen, der dem BigQuery-Datentyp T entspricht. T muss DATE, DATETIME oder TIMESTAMP sein. Wenn ein Feld (start oder end) in der Proto-Nachricht nicht festgelegt ist, stellt es eine unbegrenzte Grenze dar. Im folgenden Beispiel steht f_range_date für eine RANGE-Spalte in einer Tabelle. Da das Feld end in der Proto-Nachricht nicht festgelegt ist, ist die Endgrenze dieses Bereichs unbegrenzt.

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

Ein Arraytyp in der Proto-Datei entspricht einem wiederkehrenden Feld in BigQuery.

RECORD message

Ein verschachtelter Nachrichtentyp in der Proto-Datei entspricht einem Datensatzfeld in BigQuery.

Von Apache Arrow unterstützte Datentypen

Die folgende Tabelle enthält die unterstützten Datentypen in Apache Arrow und das entsprechende Eingabeformat in BigQuery.

BigQuery-Datentyp Unterstützte Apache Arrow-Typen Unterstützte Typparameter
BOOL Boolean
BYTES Binary
DATE Date unit = Tag
String, int32
DATETIME Timestamp unit = MICROSECONDS

timezone ist leer

FLOAT FloatingPoint Genauigkeit in {SINGLE, DOUBLE}
GEOGRAPHY Utf8

Der Wert ist eine Geometrie im WKT- oder GeoJson-Format.

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

is_signed = false

JSON Utf8
NUMERIC Decimal128 Sie können einen NUMERIC-Typ mit einer Genauigkeit oder Skalierung angeben, die kleiner als der von BigQuery unterstützte Bereich ist.
BIGNUMERIC Decimal256 Sie können einen BIGNUMERIC-Wert mit einer Genauigkeit oder Skalierung angeben, die kleiner als der von BigQuery unterstützte Bereich ist.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

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

Das Arrow-Struct muss zwei Unterfelder mit den Namen start und end haben.

Für die Spalte RANGE<DATE> müssen die Felder vom Typ „Pfeil“ Date mit unit=Day sein.

Für die Spalte RANGE<DATETIME> müssen die Felder vom Arrow-Typ Timestamp mit unit=MICROSECONDS sein, ohne Zeitzone.

Für RANGE<TIMESTAMP> müssen die Felder vom Pfeiltyp Timestamp mit unit=MICROSECONDS, timezone=UTC sein.

Ein Wert „NULL“ in einem der Felder „start“ und „end“ wird als „UNBOUNDED“ behandelt.

REPEATED FIELD List Ein NULL-Wert muss durch eine leere Liste dargestellt werden.
RECORD Struct