Jenis data buffering protokol dan Arrow yang didukung

Dokumen ini menjelaskan buffering protokol dan jenis data Arrow yang didukung untuk setiap jenis data BigQuery. Sebelum membaca dokumen ini, baca Ringkasan BigQuery Storage Write API.

Jenis data buffering protokol yang didukung

Tabel berikut menunjukkan jenis data yang didukung dalam buffering protokol dan format input yang sesuai di BigQuery:

Jenis data BigQuery Jenis buffering protokol yang didukung
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (pilihan), int64, string

Nilainya adalah jumlah hari sejak epoch Unix (1970-01-01). Rentang yang valid adalah -719162 (0001-01-01) hingga 2932896 (9999-12-31).

DATETIME, TIME string

Nilainya harus berupa literal DATETIME atau TIME.

int64

Gunakan class CivilTimeEncoder untuk melakukan konversi.

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

Nilainya merupakan geometri dalam format WKT atau 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

Gunakan class BigDecimalByteStringEncoder untuk melakukan konversi.

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

Nilai ini harus berupa literal TIME.

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

Nilai ini diberikan dalam mikrodetik sejak Unix epoch (1970-01-01).

INTERVAL string, google.protobuf.Duration

Nilai string harus berupa literal INTERVAL.

RANGE<T> message

Jenis pesan bertingkat di proto dengan dua kolom, start dan end, dengan kedua kolom harus memiliki jenis buffering protokol yang didukung yang sama dan sesuai dengan jenis data BigQuery T. T harus berupa DATE, DATETIME, atau TIMESTAMP. Jika kolom (start atau end) tidak ditetapkan dalam pesan proto, kolom tersebut mewakili batas yang tidak terbatas. Dalam contoh berikut, f_range_date mewakili kolom RANGE dalam tabel. Karena kolom end tidak ditetapkan dalam pesan proto, batas akhir rentang ini tidak terbatas.

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

Jenis array di proto sesuai dengan kolom berulang di BigQuery.

RECORD message

Jenis pesan bertingkat di proto sesuai dengan kolom catatan di BigQuery.

Jenis data Apache Arrow yang didukung

Tabel berikut menunjukkan jenis data yang didukung di Apache Arrow dan format input yang sesuai di BigQuery.

Jenis data BigQuery Jenis Apache Arrow yang didukung Parameter jenis yang didukung
BOOL Boolean
BYTES Binary
DATE Date unit = Hari
String, int32
DATETIME Timestamp unit = MIKRODETIK

timezone is empty

FLOAT FloatingPoint Presisi dalam {SINGLE, DOUBLE}
GEOGRAPHY Utf8

Nilainya merupakan geometri dalam format WKT atau GeoJson.

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

is_signed = false

JSON Utf8
NUMERIC Decimal128 Anda dapat memberikan NUMERIC yang memiliki presisi atau skala yang lebih kecil dari rentang yang didukung BigQuery.
BIGNUMERIC Decimal256 Anda dapat memberikan BIGNUMERIC yang memiliki presisi atau skala yang lebih kecil dari rentang yang didukung BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MIKRODETIK

timezone = UTC

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

Struct Panah harus memiliki dua subkolom bernama start dan end.

Untuk kolom RANGE<DATE>, kolom harus berupa jenis Panah Date dengan unit=Day.

Untuk kolom RANGE<DATETIME>, kolom harus berupa jenis Panah Timestamp dengan unit=MICROSECONDS, tanpa zona waktu.

Untuk RANGE<TIMESTAMP>, kolom harus berupa Jenis panah Timestamp dengan unit=MICROSECONDS, timezone=UTC.

Nilai NULL di kolom start dan end akan diperlakukan sebagai UNBOUNDED.

REPEATED FIELD List Nilai NULL harus diwakili oleh daftar kosong.
RECORD Struct