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

En este documento se describen los tipos de datos de búfer de protocolo y Arrow admitidos para cada tipo de datos de BigQuery. Antes de leer este documento, consulte la información general sobre la API Storage Write de BigQuery.

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 (preferida), int64 y string

El valor es el número de días transcurridos desde el inicio del registro de tiempo Unix (1970-01-01). El intervalo válido va de -719162 (0001-01-01) a 2932896 (9999-12-31).

DATETIME, TIME string

El valor debe ser un literal DATETIME o TIME.

int64

Usa la clase 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 TIME.

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

El valor se indica en microsegundos desde la época de Unix (1970-01-01).

INTERVAL string, google.protobuf.Duration

El valor de cadena debe ser un literal INTERVAL.

RANGE<T> message

Un tipo de mensaje anidado en el proto con dos campos, start y end, donde ambos campos deben ser del mismo tipo de búfer de protocolo admitido que corresponda a un tipo de datos de BigQuery T. T debe ser DATE, DATETIME o TIMESTAMP. Si no se define un campo (start o end) en el mensaje proto, representa un límite ilimitado. En el siguiente ejemplo, f_range_date representa una columna RANGE de una tabla. Como el campo end no está definido en el mensaje proto, el límite final de este intervalo no está definido.

{
  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 admitidos en Apache Arrow y el formato de entrada correspondiente en BigQuery.

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

timezone está vacío

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 valor NUMERIC con cualquier precisión o escala que sea inferior al intervalo admitido por BigQuery.
BIGNUMERIC Decimal256 Puedes proporcionar un valor BIGNUMERIC que tenga cualquier precisión o escala que sea inferior al intervalo admitido por BigQuery.
STRING Utf8
TIMESTAMP Timestamp unit= MICROSECONDS

timezone = UTC

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

El tipo STRUCT de Arrow debe tener dos subcampos llamados start y end.

En la columna RANGE<DATE>, los campos deben ser: Tipo de flecha Date con unit=Day.

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

En el caso de RANGE<TIMESTAMP>, los campos deben ser del tipo Flecha Timestamp con unit=MICROSECONDS, timezone=UTC.

Si se asigna el valor NULL a cualquiera de los campos start y end, se considerará que es UNBOUNDED.

REPEATED FIELD List El valor de NULL debe representarse mediante una lista vacía.
RECORD Struct