Tipos de dados e buffer de protocolo com suporte

Este documento descreve os tipos de dados e buffer de protocolo compatíveis para cada tipo de dados do BigQuery. Antes de ler este documento, leia Visão geral da API BigQuery Storage Write.

Tipos de dados de buffer de protocolo compatíveis

A tabela a seguir mostra os tipos de dados aceitos em buffers de protocolo e o formato de entrada correspondente no BigQuery:

Tipo de dados do BigQuery Tipos de buffer de protocolo compatíveis
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (recomendável), int64, string

O valor é o número de dias desde a época Unix (1970-01-01). O intervalo válido é de -719162 (0001-01-01) a 2932896 (9999-12-31).

DATETIME, TIME string

O valor precisa ser um literal DATETIME ou TIME.

int64

Use a classe CivilTimeEncoder para realizar a conversão.

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

O valor é uma geometria no formato WKT ou 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

Use a classe BigDecimalByteStringEncoder para realizar a conversão.

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

O valor precisa ser um TIMEliteral.

TIMESTAMP int64 (recomendável), int32, uint32, google.protobuf.Timestamp

O valor é fornecido em microssegundos desde a época Unix (1970-01-01).

INTERVAL string, google.protobuf.Duration

O valor da string precisa ser um literal INTERVAL.

RANGE<T> message

Um tipo de mensagem aninhado no proto com dois campos, start e end, em que os dois campos precisam ser do mesmo tipo de buffer de protocolo compatível que corresponde a um tipo de dados do BigQuery T. T precisa ser DATE, DATETIME ou TIMESTAMP. Se um campo (start ou end) não for definido na mensagem proto, ele vai representar um limite ilimitado. No exemplo a seguir, f_range_date representa uma coluna RANGE em uma tabela. Como o campo end não está definido na mensagem proto, o limite final desse intervalo é ilimitado.

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

Um tipo de matriz no proto corresponde a um campo repetido no BigQuery.

RECORD message

Um tipo de mensagem aninhada no proto corresponde a um campo de registro no BigQuery.

Tipos de dados do Apache Arrow com suporte

A tabela a seguir mostra os tipos de dados aceitos no Apache Arrow e o formato de entrada correspondente no BigQuery.

Tipo de dados do BigQuery Tipos de setas do Apache com suporte Parâmetros de tipo com suporte
BOOL Boolean
BYTES Binary
DATE Date unit = Dia
String, int32
DATETIME Timestamp unit = MICROSECONDS

fuso horário está vazio

FLOAT FloatingPoint Precisão em {SINGLE, DOUBLE}
GEOGRAPHY Utf8

O valor é uma geometria no formato WKT ou GeoJson.

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

is_signed = false

JSON Utf8
NUMERIC Decimal128 É possível fornecer um NUMERIC com qualquer precisão ou escala menor que o intervalo compatível com o BigQuery.
BIGNUMERIC Decimal256 É possível fornecer um BIGNUMERIC com qualquer precisão ou escala menor que o intervalo compatível com o BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

INTERVAL Interval unidade em {YEAR_MONTH, DAY_TIME, MONTH_DAY_NANO}
Utf8
RANGE<T> Struct

A estrutura de seta precisa ter dois subcampos chamados start e end.

Para a coluna RANGE<DATE>, os campos precisam ser do tipo seta Date com unit=Day.

Para a coluna RANGE<DATETIME>, os campos precisam ser do tipo Timestamp com unit=MICROSECONDS, sem o fuso horário.

Para RANGE<TIMESTAMP>, os campos precisam ser do tipo seta Timestamp com unit=MICROSECONDS, timezone=UTC.

Um valor NULL em qualquer um dos campos start e end será tratado como UNBOUNDED.

REPEATED FIELD List Um valor NULL precisa ser representado por uma lista vazia.
RECORD Struct