Справочник
Поддерживаемые источники данных
| Название | Логотип | Тип | Статус | Описание |
|---|---|---|---|---|
| Apache Kafka | Потоковый | Стабильный | Настройте ClickPipes и начните приём потоковых данных из Apache Kafka в ClickHouse Cloud. | |
| Confluent Cloud | Потоковый | Стабильный | Задействуйте совокупную мощь Confluent и ClickHouse Cloud с помощью нашей прямой интеграции. | |
| 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 |
|---|---|
bool | UInt8 |
float | Float32 |
double | Float64 |
int32, sint32, sfixed32 | Int32 |
int64, sint64, sfixed64 | Int64 |
uint32, fixed32 | UInt32 |
uint64, fixed64 | UInt64 |
string, bytes | String |
enum | Enum |
repeated T | Array(T) |
message | Tuple |
Для числовых типов рекомендуется точное соответствие, чтобы избежать переполнения или потери точности.
Также поддерживаются следующие стандартные well-known types:
| Стандартный тип | Тип ClickHouse |
|---|---|
google.protobuf.Timestamp | DateTime, DateTime64 |
google.protobuf.Duration | Time, Time64 |
google.protobuf.StringValue, google.protobuf.BytesValue | Nullable(String) |
google.protobuf.Int32Value, google.protobuf.SInt32Value, google.protobuf.SFixed32Value | Nullable(Int32) |
google.protobuf.Int64Value, google.protobuf.SInt64Value, google.protobuf.SFixed64Value | Nullable(Int64) |
google.protobuf.UInt32Value, google.protobuf.Fixed32Value | Nullable(UInt32) |
google.protobuf.UInt64Value, google.protobuf.Fixed64Value | Nullable(UInt64) |
google.protobuf.FloatValue | Nullable(Float32) |
google.protobuf.DoubleValue | Nullable(Float64) |
google.protobuf.BoolValue | Nullable(UInt8) |
Protobuf oneof
В процессе вывода схемы поля Protobuf oneof по умолчанию сопоставляются с именованным Tuple, в котором не более одного поля содержит значение,
отличное от значения по умолчанию. Эти поля также могут автоматически сопоставляться со столбцом Variant, где активное значение принимает тип
того составного поля, которое установлено. Кроме того, каждое составное поле можно вручную сопоставить с отдельным столбцом ClickHouse; поскольку поля oneof
взаимно исключают друг друга, в каждой записи будет заполнен только один столбец.
Списки сообщений
Если schema Protobuf верхнего уровня, заданная для ClickPipe, содержит одно повторяющееся поле, которое само является сообщением protobuf, то вывод схемы и соответствие столбцов будут основываться на «вложенном» поле Message. Сообщение Kafka будет обрабатываться как список таких сообщений, и одно сообщение Kafka будет разворачиваться в несколько строк ClickHouse.
Виртуальные столбцы Kafka
Для потоковых источников данных, совместимых с Kafka, доступны следующие виртуальные столбцы. При создании нового пункта назначения виртуальные столбцы можно добавить в целевую таблицу с помощью кнопки Add Column.
| Name | Description | Recommended Data Type |
|---|---|---|
_key | Kafka Message Key | String |
_timestamp | Kafka Timestamp (точность в миллисекундах) | DateTime64(3) |
_partition | Kafka Partition | Int32 |
_offset | Kafka Offset | Int64 |
_topic | Kafka Topic | String |
_header_keys | Параллельный массив ключей в заголовках (Headers) записи | Array(String) |
_header_values | Параллельный массив значений заголовков (Headers) записи | Array(String) |
_raw_message | Полное сообщение Kafka | String |
Обратите внимание, что столбец _raw_message рекомендуется использовать только для данных в формате JSON.
Для сценариев, когда требуется только JSON-строка (например, при использовании функций ClickHouse JsonExtract* для
заполнения нижестоящего materialized view), можно повысить производительность ClickPipes, удалив все «не виртуальные» столбцы.