Перейти к основному содержимому
Перейти к основному содержимому

Справочник

Поддерживаемые источники данных

НазваниеЛоготипТипСтатусОписание
Apache KafkaПотоковыйСтабильныйНастройте ClickPipes и начните приём потоковых данных из Apache Kafka в ClickHouse Cloud.
Confluent CloudПотоковыйСтабильныйЗадействуйте совокупную мощь Confluent и ClickHouse Cloud с помощью нашей прямой интеграции.
Redpanda
логотип Redpanda
ПотоковыйСтабильныйНастройте ClickPipes и начните приём потоковых данных из Redpanda в ClickHouse Cloud.
AWS MSKПотоковыйСтабильныйНастройте ClickPipes и начните приём потоковых данных из AWS MSK в ClickHouse Cloud.
Azure Event HubsПотоковыйСтабильныйНастройте ClickPipes и начните приём потоковых данных из Azure Event Hubs в ClickHouse Cloud.
WarpStreamПотоковыйСтабильныйНастройте ClickPipes и начните приём потоковых данных из WarpStream в ClickHouse Cloud.

Поддерживаемые форматы данных

Поддерживаемые форматы следующие:

Поддерживаемые типы данных

Стандартные

В ClickPipes в данный момент поддерживаются следующие стандартные типы данных ClickHouse:

  • базовые числовые типы — [U]Int8/16/32/64, Float32/64 и BFloat16
  • большие целочисленные типы — [U]Int128/256
  • типы Decimal
  • Boolean
  • String
  • FixedString
  • Date, Date32
  • DateTime, DateTime64 (только часовой пояс UTC)
  • Enum8/Enum16
  • UUID
  • IPv4
  • IPv6
  • Time, Time64
  • JSON
  • все типы ClickHouse LowCardinality
  • Map с ключами и значениями любого из перечисленных выше типов (включая Nullable)
  • Tuple и Array с элементами любого из перечисленных выше типов (включая Nullable, только один уровень вложенности)
  • типы SimpleAggregateFunction (для целевых таблиц на AggregatingMergeTree или SummingMergeTree)

Поддержка типа Variant

ClickPipes поддерживает тип Variant в следующих случаях:

  • Объединения Avro (Avro unions). Если ваша схема Avro содержит union с несколькими типами, отличными от null, ClickPipes выведет соответствующий тип Variant. В остальных случаях тип Variant для данных Avro не поддерживается.
  • Поля JSON. Вы можете вручную указать тип Variant (например, Variant(String, Int64, DateTime)) для любого поля JSON во входящем потоке данных. Сложные подтипы (массивы/отображения/кортежи) не поддерживаются. Кроме того, из-за того, как ClickPipes определяет корректный подтип Variant, в определении Variant может использоваться только один целочисленный или один тип даты/времени — например, Variant(Int64, UInt32) не поддерживается.

Поддержка типа JSON

ClickPipes поддерживают тип JSON в следующих случаях:

  • Поля Avro Record и Protobuf Message всегда можно сопоставить со столбцом типа JSON.
  • Поля Avro String и Bytes можно сопоставить со столбцом типа JSON, если поле Avro фактически содержит строки в формате JSON.
  • Типы Protobuf String и Bytes можно сопоставить со столбцом типа JSON, если поле Protobuf фактически содержит строки в формате JSON.
  • Поля JSON, которые всегда являются JSON-объектом, можно сопоставить с целевым столбцом типа JSON.

Обратите внимание, что целевой столбец (включая любые явно заданные или пропускаемые пути) вам потребуется вручную изменить на нужный тип JSON.

Avro

Поддерживаемые типы данных Avro

ClickPipes поддерживает все примитивные и сложные типы Avro, а также все логические типы Avro, кроме local-timestamp-millis и local_timestamp-micros. Типы Avro record преобразуются в Tuple, типы array — в Array, а map — в Map (только строковые ключи). В целом доступны преобразования, перечисленные здесь. Рекомендуется использовать точное соответствие типов для числовых типов Avro, так как ClickPipes не проверяет переполнение или потерю точности при преобразовании типов. В качестве альтернативы все типы Avro можно записывать в столбец String, и в этом случае они будут представлены в виде валидной JSON-строки.

Типы Nullable и объединения Avro

Типы Nullable в Avro задаются с помощью схемы Union (T, null) или (null, T), где T — базовый тип Avro. Во время вывода схемы такие объединения будут отображены в столбец ClickHouse типа Nullable. Обратите внимание, что ClickHouse не поддерживает типы Nullable(Array), Nullable(Map) или Nullable(Tuple). Объединения Avro с null для этих типов будут отображены в варианты, не допускающие NULL (типы Avro Record отображаются в именованный Tuple в ClickHouse). Значения null в Avro для этих типов будут вставляться как:

  • Пустой Array для массива Avro со значением null
  • Пустой Map для Map Avro со значением null
  • Именованный Tuple со всеми значениями по умолчанию/нулевыми значениями для Record Avro со значением null

Protobuf

Поддерживаемые типы данных Protobuf

ClickPipes поддерживает все типы Protobuf 2 и 3, за исключением давно устаревшего типа group из proto 2. Для базовых преобразований типов используются следующие соответствия:

Примечание

Также поддерживаются варианты Array, Map и Nullable для всех базовых типов.

Тип ProtobufТип ClickHouse
boolUInt8
floatFloat32
doubleFloat64
int32, sint32, sfixed32Int32
int64, sint64, sfixed64Int64
uint32, fixed32UInt32
uint64, fixed64UInt64
string, bytesString
enumEnum
repeated TArray(T)
messageTuple
Совет

Для числовых типов рекомендуется точное соответствие, чтобы избежать переполнения или потери точности.

Также поддерживаются следующие стандартные well-known types:

Стандартный типТип ClickHouse
google.protobuf.TimestampDateTime, DateTime64
google.protobuf.DurationTime, Time64
google.protobuf.StringValue, google.protobuf.BytesValueNullable(String)
google.protobuf.Int32Value, google.protobuf.SInt32Value, google.protobuf.SFixed32ValueNullable(Int32)
google.protobuf.Int64Value, google.protobuf.SInt64Value, google.protobuf.SFixed64ValueNullable(Int64)
google.protobuf.UInt32Value, google.protobuf.Fixed32ValueNullable(UInt32)
google.protobuf.UInt64Value, google.protobuf.Fixed64ValueNullable(UInt64)
google.protobuf.FloatValueNullable(Float32)
google.protobuf.DoubleValueNullable(Float64)
google.protobuf.BoolValueNullable(UInt8)

Protobuf oneof

В процессе вывода схемы поля Protobuf oneof по умолчанию сопоставляются с именованным Tuple, в котором не более одного поля содержит значение, отличное от значения по умолчанию. Эти поля также могут автоматически сопоставляться со столбцом Variant, где активное значение принимает тип того составного поля, которое установлено. Кроме того, каждое составное поле можно вручную сопоставить с отдельным столбцом ClickHouse; поскольку поля oneof взаимно исключают друг друга, в каждой записи будет заполнен только один столбец.

Списки сообщений

Если schema Protobuf верхнего уровня, заданная для ClickPipe, содержит одно повторяющееся поле, которое само является сообщением protobuf, то вывод схемы и соответствие столбцов будут основываться на «вложенном» поле Message. Сообщение Kafka будет обрабатываться как список таких сообщений, и одно сообщение Kafka будет разворачиваться в несколько строк ClickHouse.

Виртуальные столбцы Kafka

Для потоковых источников данных, совместимых с Kafka, доступны следующие виртуальные столбцы. При создании нового пункта назначения виртуальные столбцы можно добавить в целевую таблицу с помощью кнопки Add Column.

NameDescriptionRecommended Data Type
_keyKafka Message KeyString
_timestampKafka Timestamp (точность в миллисекундах)DateTime64(3)
_partitionKafka PartitionInt32
_offsetKafka OffsetInt64
_topicKafka TopicString
_header_keysПараллельный массив ключей в заголовках (Headers) записиArray(String)
_header_valuesПараллельный массив значений заголовков (Headers) записиArray(String)
_raw_messageПолное сообщение KafkaString

Обратите внимание, что столбец _raw_message рекомендуется использовать только для данных в формате JSON. Для сценариев, когда требуется только JSON-строка (например, при использовании функций ClickHouse JsonExtract* для заполнения нижестоящего materialized view), можно повысить производительность ClickPipes, удалив все «не виртуальные» столбцы.