Unterstützte Protokollzwischenspeicher- und Arrow-Datentypen

In diesem Dokument werden die unterstützten Protokollzwischenspeicher- und Arrow-Datentypen für die jeweiligen BigQuery-Datentypen beschrieben. Bevor Sie dieses Dokument lesen, sollten Sie die Übersicht über die BigQuery Storage Write API (gRPC)lesen.

Unterstützte Protokollzwischenspeichertypen

In der folgenden Tabelle sind die unterstützten Datentypen in Protokollzwischenspeichern 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ültige Bereich liegt zwischen -719162 (01.01.0001) und 2932896 (31.12.9999).

DATETIME, TIME string

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

int64

Verwenden Sie die CivilTimeEncoder Klasse, 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 BigDecimalByteStringEncoder Klasse, 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 stellt f_range_date eine RANGE-Spalte in einer Tabelle dar. 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.

Unterstützte Apache Arrow-Datentypen

In der folgenden Tabelle sind die unterstützten Datentypen in Apache Arrow und das entsprechende Eingabeformat in BigQuery aufgeführt.

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

timezone ist leer

FLOAT FloatingPoint Precision 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-Wert mit einer beliebigen Genauigkeit oder Skalierung angeben, die kleiner als der von BigQuery unterstützte Bereich ist.
BIGNUMERIC Decimal256 Sie können einen BIGNUMERIC-Wert mit einer beliebigen Genauigkeit oder Skalierung angeben, die kleiner als der von BigQuery unterstützte Bereich ist.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

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

Die Arrow-Struktur muss zwei Unterfelder mit den Namen start und end haben.

Für die RANGE<DATE> Spalte müssen die Felder den Arrow-Typ Date mit unit=Day haben.

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

Für RANGE<TIMESTAMP> müssen die Felder den Arrow-Typ Timestamp mit unit=MICROSECONDS, timezone=UTC haben.

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

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