지원되는 프로토콜 버퍼 및 Arrow 데이터 유형

이 문서에서는 각 BigQuery 데이터 유형에 지원되는 프로토콜 버퍼 및 Arrow 데이터 유형을 설명합니다. 이 문서를 읽기 전에 BigQuery Storage Write API 개요를 읽어보세요.

지원되는 프로토콜 버퍼 데이터 유형

다음 표에는 프로토콜 버퍼에서 지원되는 데이터 유형과 BigQuery의 해당 입력 형식이 나와 있습니다.

BigQuery 데이터 유형 지원되는 프로토콜 버퍼 유형
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32(권장), int64, string

이 값은 Unix epoch(1970-01-01) 이후의 일 수입니다. 유효한 범위는 -719162 (0001-01-01)~2932896 (9999-12-31)입니다.

DATETIME, TIME string

값은 DATETIME 또는 TIME 리터럴이어야 합니다.

int64

CivilTimeEncoder 클래스를 사용하여 변환을 수행합니다.

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

값은 WKT 또는 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

BigDecimalByteStringEncoder 클래스를 사용하여 변환을 수행합니다.

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

값은 TIME 리터럴이어야 합니다.

TIMESTAMP int64(권장), int32, uint32, google.protobuf.Timestamp

값은 Unix epoch(1970-01-01) 이후의 마이크로초 수로 제공됩니다.

INTERVAL string, google.protobuf.Duration

문자열 값은 INTERVAL 리터럴이어야 합니다.

RANGE<T> message

startend 필드가 있는 proto의 중첩된 메시지 유형이며, 두 필드 모두 BigQuery 데이터 유형 T에 해당하는 동일한 지원되는 프로토콜 버퍼 유형이어야 합니다. TDATE, DATETIME, TIMESTAMP 중 하나여야 합니다. proto 메시지에 필드(start 또는 end)가 설정되지 않았으면 바인딩되지 않은 경계를 나타냅니다. 다음 예시에서 f_range_dateRANGE 열을 나타냅니다. 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 단위 = 일
String, int32
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라는 두 개의 하위 필드가 있어야 합니다.

RANGE<DATE> 열의 경우 필드는 unit=Day가 있는 화살표 유형 Date이어야 합니다.

RANGE<DATETIME> 열의 경우 필드는 시간대 없이 unit=MICROSECONDS가 있는 Arrow 유형 Timestamp이어야 합니다.

RANGE<TIMESTAMP>의 경우 필드는 unit=MICROSECONDS, timezone=UTC가 있는 화살표 유형 Timestamp이어야 합니다.

startend 필드의 NULL 값은 UNBOUNDED로 처리됩니다.

REPEATED FIELD List NULL 값은 빈 목록으로 표시되어야 합니다.
RECORD Struct