対応しているプロトコル バッファと 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

タイムゾーンが空です

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 の Arrow タイプ Date にする必要があります。

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

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

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

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