Fuentes de datos compatibles
Formatos de datos admitidos
Tipos de datos compatibles
Tipos estándar
- Tipos numéricos básicos: [U]Int8/16/32/64, Float32/64 y BFloat16
- Tipos enteros grandes: [U]Int128/256
- Tipos Decimal
- Boolean
- String
- FixedString
- Date, Date32
- DateTime, DateTime64 (solo zonas horarias UTC)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- Time, Time64
- JSON
- todos los tipos LowCardinality de ClickHouse
- Map con claves y valores que usan cualquiera de los tipos anteriores (incluidos los Nullable)
- Tuple y Array con elementos que usan cualquiera de los tipos anteriores (incluidos los Nullable, solo un nivel de profundidad)
- tipos SimpleAggregateFunction (para destinos AggregatingMergeTree o SummingMergeTree)
Compatibilidad con el tipo Variant
- Unions de Avro. Si su esquema de Avro contiene una unión con varios tipos no nulos, ClickPipes inferirá el tipo Variant adecuado. En otros casos, los tipos Variant no se admiten para datos Avro.
- Campos JSON. Puede especificar manualmente un tipo Variant (como
Variant(String, Int64, DateTime)) para cualquier campo JSON en el flujo de datos de origen. No se admiten subtipos complejos (arrays/maps/tuples). Además, debido a la forma en que ClickPipes determina el subtipo Variant correcto que debe usar, en la definición de Variant solo puede usarse un tipo entero o de fecha y hora; por ejemplo,Variant(Int64, UInt32)no se admite.
Compatibilidad con el tipo JSON
- Los campos Avro Record y Protobuf Message siempre se pueden asignar a una columna JSON.
- Los campos Avro String y Bytes se pueden asignar a una columna JSON si el campo Avro contiene realmente cadenas JSON que representan objetos.
- Los campos Protobuf de tipo String y Bytes se pueden asignar a una columna JSON si el campo Protobuf contiene realmente cadenas JSON que representan objetos.
- Los campos JSON que siempre son un objeto JSON se pueden asignar a una columna JSON de destino.
Avro
Tipos de datos Avro compatibles
local-timestamp-millis y local_timestamp-micros. Los tipos record de Avro se convierten en Tuple, los tipos array en Array y map en Map (solo claves de cadena). En general, están disponibles las conversiones indicadas aquí. Recomendamos usar una correspondencia exacta de tipos para los tipos numéricos de Avro, ya que ClickPipes no comprueba el overflow ni la pérdida de precisión durante la conversión de tipos.
Como alternativa, todos los tipos de Avro se pueden insertar en una columna String y, en ese caso, se representarán como una cadena JSON válida.
Tipos Nullable y uniones de Avro
(T, null) o (null, T), donde T es el tipo base de Avro. Durante la inferencia de esquemas, estas uniones se asignan a una columna “Nullable” de ClickHouse. Ten en cuenta que ClickHouse no admite los tipos
Nullable(Array), Nullable(Map) ni Nullable(Tuple). Las uniones con null de Avro para estos tipos se asignan a versiones no anulables (los tipos Record de Avro se asignan a un Tuple con nombre de ClickHouse). Los valores “null” de Avro para estos tipos se insertarán como:
- Un Array vacío para un array de Avro nulo
- Un Map vacío para un Map de Avro nulo
- Un Tuple con nombre con todos los valores predeterminados o cero para un Record de Avro nulo
Protobuf
Tipos de datos de Protobuf compatibles
group de proto 2, que lleva tiempo obsoleto. Las conversiones básicas de tipos usan
las siguientes correspondencias:
También se admiten las variantes
Array, Map y Nullable de todos los tipos básicos.
También se admiten los siguientes tipos conocidos:
Protobuf oneof
oneof de Protobuf se asignan de forma predeterminada a un Tuple con nombre, donde como máximo un campo contendrá un
valor distinto del predeterminado. Estos campos también pueden asignarse automáticamente a una columna Variant, donde el valor activo adopta el tipo del
campo constituyente que esté establecido. Como alternativa, cada campo constituyente puede asignarse manualmente a su propia columna de ClickHouse; dado que los campos oneof
son mutuamente excluyentes, solo se rellenará una columna por registro.
Listas de mensajes
Columnas virtuales de Kafka
Add Column.
Ten en cuenta que la columna
_raw_message solo se recomienda para datos JSON.
En los casos de uso en los que solo se necesita la cadena JSON (por ejemplo, al usar las funciones JsonExtract* de ClickHouse para
poblar una vista materializada de destino), eliminar todas las columnas “no virtuales” puede mejorar el rendimiento de ClickPipes.