Fontes de dados compatíveis
Formatos de dados compatíveis
Tipos de dados suportados
Tipos padrão
- Tipos numéricos básicos - [U]Int8/16/32/64, Float32/64 e BFloat16
- Tipos inteiros grandes - [U]Int128/256
- Tipos Decimal
- Boolean
- String
- FixedString
- Date, Date32
- DateTime, DateTime64 (apenas fusos horários UTC)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- Time, Time64
- JSON
- todos os tipos LowCardinality do ClickHouse
- map com chaves e valores usando qualquer um dos tipos acima (incluindo Nullable)
- Tuple e Array com elementos usando qualquer um dos tipos acima (incluindo Nullable, com apenas um nível de profundidade)
- Tipos SimpleAggregateFunction (para destinos AggregatingMergeTree ou SummingMergeTree)
Suporte ao tipo Variant
- Unions do Avro. Se o seu esquema Avro contiver uma union com vários tipos não nulos, o ClickPipes inferirá o tipo Variant apropriado. Fora isso, tipos Variant não são compatíveis com dados Avro.
- Campos JSON. Você pode especificar manualmente um tipo Variant (como
Variant(String, Int64, DateTime)) para qualquer campo JSON no fluxo de dados de origem. Subtipos complexos (arrays/maps/tuples) não são compatíveis. Além disso, devido à forma como o ClickPipes determina qual subtipo Variant correto deve ser usado, apenas um tipo inteiro ou datetime pode ser usado na definição de Variant - por exemplo,Variant(Int64, UInt32)não é compatível.
Suporte ao tipo JSON
- Campos Avro Record e Protobuf Message sempre podem ser atribuídos a uma coluna JSON.
- Campos Avro String e Bytes podem ser atribuídos a uma coluna JSON se o campo Avro realmente contiver objetos JSON em formato String.
- Tipos Protobuf String e Bytes podem ser atribuídos a uma coluna JSON se o campo Protobuf realmente contiver objetos JSON em formato String.
- Campos JSON que sejam sempre um objeto JSON podem ser atribuídos a uma coluna JSON de destino.
Avro
Tipos de dados Avro compatíveis
local-timestamp-millis e local_timestamp-micros. Os tipos record do Avro são convertidos em Tuple, os tipos array em Array e map em Map (apenas chaves do tipo string). Em geral, as conversões listadas aqui estão disponíveis. Recomendamos usar correspondência exata de tipos para os tipos numéricos do Avro, pois o ClickPipes não verifica overflow nem perda de precisão na conversão de tipos.
Como alternativa, todos os tipos do Avro podem ser inseridos em uma coluna String e, nesse caso, serão representados como uma string JSON válida.
Tipos Nullable e unions do Avro
(T, null) ou (null, T), em que T é o tipo base do Avro. Durante a inferência de esquema, essas unions serão mapeadas para uma coluna “Nullable” no ClickHouse. Observe que o ClickHouse não oferece suporte a
Nullable(Array), Nullable(Map) ou Nullable(Tuple). As unions com null do Avro para esses tipos serão mapeadas para versões não anuláveis (os tipos Record do Avro são mapeados para um named Tuple no ClickHouse). Os “nulls” do Avro para esses tipos serão inseridos como:
- Um Array vazio para um array nulo do Avro
- Um Map vazio para um Map nulo do Avro
- Um named Tuple com todos os valores padrão/zero para um Record nulo do Avro
Protobuf
Tipos de dados Protobuf suportados
group do proto 2, obsoleto há muito tempo. As conversões básicas de tipos usam
os seguintes mapeamentos:
Variantes
Array, Map e Nullable de todos os tipos básicos também são suportadas.
Os seguintes tipos bem conhecidos também são suportados:
oneof do Protobuf
oneof do Protobuf são mapeados por padrão para uma Tuple nomeada, em que no máximo um campo terá um
valor diferente do padrão. Esses campos também podem ser mapeados automaticamente para uma coluna Variant, em que o valor ativo assume o tipo do
campo constituinte que estiver definido. Como alternativa, cada campo constituinte pode ser mapeado manualmente para sua própria coluna no ClickHouse; como os campos oneof
são mutuamente exclusivos, apenas uma coluna será preenchida por registro.
Listas de mensagens
Colunas virtuais do Kafka
Add Column.
Observe que a coluna
_raw_message é recomendada apenas para dados JSON.
Para casos de uso em que apenas a string JSON é necessária (como ao usar funções JsonExtract* do ClickHouse para
alimentar uma visão materializada downstream), remover todas as colunas “não virtuais” pode melhorar o desempenho do ClickPipes.