Unterstützte Protokollzwischenspeicher- und Arrow-Datentypen

In diesem Dokument werden die unterstützten Protokollzwischenspeicher- 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 Protokollzwischenspeicher-Datentypen

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ü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 Protokollnachricht 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.

Unterstützte Apache Arrow-Datentypen

Die folgende Tabelle zeigt 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 Einheit = Tag
String, int32
DATETIME Timestamp unit = MICROSECONDS

Zeitzone 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 Einheit 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 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 den Pfeiltyp Timestamp mit unit=MICROSECONDS ohne Zeitzone enthalten.

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

Ein NULL-Wert 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