対応しているプロトコル バッファと Arrow のデータ型

このドキュメントでは、各 BigQuery データ型でサポートされているプロトコル バッファと Arrow のデータ型について説明します。このドキュメントを読む前に、BigQuery Storage Write API の概要をご覧ください。

サポートされているプロトコル バッファのデータ型

次の表は、プロトコル バッファでサポートされているデータ型と、BigQuery で対応する入力形式を示しています。

BigQuery のデータ型 サポートされているプロトコル バッファの型
BOOL boolint32int64uint32uint64google.protobuf.BoolValue
BYTES bytesstringgoogle.protobuf.BytesValue
DATE int32(優先)、int64string

値は、Unix エポック(1970-01-01)からの日数です。有効な範囲は -719162(0001-01-01)~ 2932896(9999-12-31)です。

DATETIMETIME string

値は DATETIME リテラルまたは TIME リテラルにする必要があります。

int64

CivilTimeEncoder クラスを使用して変換を実施します。

FLOAT doublefloatgoogle.protobuf.DoubleValuegoogle.protobuf.FloatValue
GEOGRAPHY string

値は WKT または GeoJson 形式のジオメトリです。

INTEGER int32int64uint32enumgoogle.protobuf.Int32Valuegoogle.protobuf.Int64Valuegoogle.protobuf.UInt32Value
JSON string
NUMERICBIGNUMERIC int32int64uint32uint64doublefloatstring
bytesgoogle.protobuf.BytesValue

BigDecimalByteStringEncoder クラスを使用して変換を実施します。

STRING stringenumgoogle.protobuf.StringValue
TIME string

値は TIME リテラルにする必要があります。

TIMESTAMP int64(推奨)、int32uint32google.protobuf.Timestamp

値は Unix エポック(1970-01-01)からの時間で、マイクロ秒単位で指定します。

INTERVAL stringgoogle.protobuf.Duration

文字列値は INTERVAL リテラルにする必要があります。

RANGE<T> message

startend の 2 つのフィールドを持つ proto のネストされたメッセージ型。両方のフィールドは、BigQuery データ型 T に対応するサポートされているプロトコル バッファ型と同じであることが必要です。TDATEDATETIMETIMESTAMP のいずれかにする必要があります。proto メッセージでフィールド(start または end)が設定されていない場合は、境界が無限であることを表します。次の例では、f_range_date はテーブルの RANGE 列を表します。proto メッセージでは end フィールドが設定されていないため、この範囲の終端境界は無限です。

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

proto の配列型は、BigQuery の繰り返しフィールドに対応します。

RECORD message

proto のネストされたメッセージ型は、BigQuery のレコード フィールドに対応します。

サポートされている Apache Arrow データ型

次の表に、Apache Arrow でサポートされているデータ型と、BigQuery で対応する入力形式を示します。

BigQuery のデータ型 サポートされている Apache Arrow の型 サポートされている型パラメータ
BOOL Boolean
BYTES Binary
DATE Date unit = Day
Stringint32
DATETIME Timestamp unit = MICROSECONDS

timezone が空

FLOAT FloatingPoint {SINGLE, DOUBLE} の精度
GEOGRAPHY Utf8

値は WKT または GeoJson 形式のジオメトリです。

INTEGER int bitWidth は {8, 16, 32, 64} のいずれか

is_signed = false

JSON Utf8
NUMERIC Decimal128 BigQuery でサポートされている範囲よりも小さい精度またはスケールを持つ NUMERIC を指定できます。
BIGNUMERIC Decimal256 BigQuery でサポートされている範囲よりも小さい精度またはスケールを持つ BIGNUMERIC を指定できます。
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

INTERVAL Interval 単位: {YEAR_MONTH, DAY_TIME, MONTH_DAY_NANO}
Utf8
RANGE<T> Struct

Arrow Struct には、startend という名前の 2 つのサブフィールドが必要です。

RANGE<DATE> 列の場合、フィールドは unit=Day の矢印型 Date にする必要があります。

RANGE<DATETIME> 列の場合、フィールドはタイムゾーンなしの Arrow 型 Timestampunit=MICROSECONDS)にする必要があります。

RANGE<TIMESTAMP> の場合、フィールドは unit=MICROSECONDStimezone=UTC を含む Arrow 型 Timestamp である必要があります。

start フィールドまたは end フィールドの NULL 値は UNBOUNDED として扱われます。

REPEATED FIELD List NULL 値は空のリストで表す必要があります。
RECORD Struct