Jenis data Arrow dan buffering protokol yang didukung

Dokumen ini menjelaskan jenis data Arrow dan buffering protokol 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 buffer 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 buffer protokol yang didukung dan sama yang sesuai dengan jenis data BigQuery T. T harus salah satu dari DATE, DATETIME, atau TIMESTAMP. Jika kolom (start atau end) tidak ditetapkan dalam pesan proto, kolom tersebut akan merepresentasikan batas yang tidak terikat. Dalam contoh berikut, f_range_date merepresentasikan 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 = MICROSECONDS

zona waktu kosong

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 daripada 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= MICROSECONDS

timezone = UTC

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

Struct Arrow 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 Arrow Timestamp dengan unit=MICROSECONDS, timezone=UTC.

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

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