Tipos de datos de búfer de protocolo y Arrow admitidos

En este documento, se describen los búferes de protocolo y los tipos de datos de Arrow compatibles para cada tipo de datos de BigQuery. Antes de leer este documento, consulta la Descripción general de la API de BigQuery Storage Write.

Tipos de datos de búfer de protocolo admitidos

En la siguiente tabla, se muestran los tipos de datos admitidos en los búferes de protocolo y el formato de entrada correspondiente en BigQuery:

Tipo de datos de BigQuery Tipos de búfer de protocolo admitidos
BOOL bool, int32, int64, uint32, uint64, google.protobuf.BoolValue
BYTES bytes, string, google.protobuf.BytesValue
DATE int32 (preferido), int64, string

El valor es la cantidad de días transcurridos desde el tiempo Unix (1970-01-01). El rango válido es de -719162 (0001-01-01) a 2932896 (9999-12-31).

DATETIME, TIME string

El valor debe ser DATETIME o un literal de TIME .

int64

Usa la clasa CivilTimeEncoder para realizar la conversión.

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

El valor es una geometría en formato WKT o 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

Usa la clase BigDecimalByteStringEncoder para realizar la conversión.

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

El valor debe ser un literal de TIME.

TIMESTAMP int64 (recomendado), int32, uint32, google.protobuf.Timestamp

El valor se proporciona en microsegundos desde el tiempo Unix (1970-01-01).

INTERVAL string, google.protobuf.Duration

El valor de cadena debe ser un literal de INTERVAL.

RANGE<T> message

Un tipo de mensaje anidado en el proto con dos campos, start y end, en el que ambos campos deben ser del mismo tipo de búfer de protocolo compatible que corresponde a un tipo de datos de BigQuery T. T debe ser DATE, DATETIME o TIMESTAMP. Si un campo (start o end) no está configurado en el mensaje proto, representa un límite no delimitado. En el siguiente ejemplo, f_range_date representa una columna RANGE en una tabla. Debido a que el campo end no está configurado en el mensaje proto, el límite final de este rango es ilimitado.

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

Un tipo de array en el proto corresponde a un campo repetido en BigQuery.

RECORD message

Un tipo de mensaje anidado en el proto corresponde a un campo de registro en BigQuery.

Tipos de datos de Apache Arrow admitidos

En la siguiente tabla, se muestran los tipos de datos compatibles en Apache Arrow y el formato de entrada correspondiente en BigQuery.

Tipo de datos de BigQuery Tipos de Apache Arrow compatibles Parámetros de tipo admitidos
BOOL Boolean
BYTES Binary
DATE Date unit = Day
String, int32
DATETIME Timestamp unit = MICROSECONDS

La zona horaria está vacía.

FLOAT FloatingPoint Precisión en {SINGLE, DOUBLE}
GEOGRAPHY Utf8

El valor es una geometría en formato WKT o GeoJson.

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

is_signed = false

JSON Utf8
NUMERIC Decimal128 Puedes proporcionar un NUMERIC que tenga cualquier precisión o escala que sea inferior al rango compatible con BigQuery.
BIGNUMERIC Decimal256 Puedes proporcionar un BIGNUMERIC que tenga cualquier precisión o escala que sea inferior al rango compatible con BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

INTERVAL Interval unidad en {YEAR_MONTH, DAY_TIME, MONTH_DAY_NANO}
Utf8
RANGE<T> Struct

La estructura de flecha debe tener dos subcampos llamados start y end.

Para la columna RANGE<DATE>, los campos deben ser de tipo de flecha Date con unit=Day.

En el caso de la columna RANGE<DATETIME>, los campos deben ser del tipo Arrow Timestamp con unit=MICROSECONDS, sin la zona horaria.

Para RANGE<TIMESTAMP>, los campos deben ser del tipo de flecha Timestamp con unit=MICROSECONDS, timezone=UTC.

Un valor NULL en cualquiera de los campos start y end se tratará como UNBOUNDED.

REPEATED FIELD List Un valor NULL debe estar representado por una lista vacía.
RECORD Struct