Sources de données prises en charge
| Nom | Logo | Type | Statut | Description |
|---|
| Apache Kafka |  | Streaming | Stable | Configurez ClickPipes et commencez à ingérer des données en streaming depuis Apache Kafka dans ClickHouse Cloud. |
| Confluent Cloud |  | Streaming | Stable | Profitez de la puissance combinée de Confluent et de ClickHouse Cloud grâce à notre intégration directe. |
| Redpanda |  | Streaming | Stable | Configurez ClickPipes et commencez à ingérer des données en streaming depuis Redpanda dans ClickHouse Cloud. |
| AWS MSK |  | Streaming | Stable | Configurez ClickPipes et commencez à ingérer des données en streaming depuis AWS MSK dans ClickHouse Cloud. |
| Azure Event Hubs |  | Streaming | Stable | Configurez ClickPipes et commencez à ingérer des données en streaming depuis Azure Event Hubs dans ClickHouse Cloud. |
| WarpStream |  | Streaming | Stable | Configurez ClickPipes et commencez à ingérer des données en streaming depuis WarpStream dans ClickHouse Cloud. |
Les formats pris en charge sont :
Types de données pris en charge
Les types de données ClickHouse standard suivants sont actuellement pris en charge dans ClickPipes :
- Types numériques de base - [U]Int8/16/32/64, Float32/64 et BFloat16
- Types entiers de grande taille - [U]Int128/256
- Types Decimal
- Boolean
- String
- FixedString
- Date, Date32
- DateTime, DateTime64 (fuseaux horaires UTC uniquement)
- Enum8/Enum16
- UUID
- IPv4
- IPv6
- Time, Time64
- JSON
- tous les types LowCardinality de ClickHouse
- Map avec des clés et des valeurs utilisant l’un des types ci-dessus (y compris Nullable)
- Tuple et Array avec des éléments utilisant l’un des types ci-dessus (y compris Nullable, profondeur d’un seul niveau uniquement)
- Types SimpleAggregateFunction (pour les destinations AggregatingMergeTree ou SummingMergeTree)
Prise en charge du type Variant
ClickPipes prend en charge le type Variant dans les cas suivants :
- Unions Avro. Si votre schéma Avro contient une union avec plusieurs types non NULL, ClickPipes inférera le
type Variant approprié. Les types Variant ne sont pas pris en charge autrement pour les données Avro.
- Champs JSON. Vous pouvez spécifier manuellement un type Variant (tel que
Variant(String, Int64, DateTime)) pour n’importe quel champ JSON
dans le flux de données source. Les sous-types complexes (arrays/maps/tuples) ne sont pas pris en charge. De plus, en raison de la façon dont ClickPipes détermine
le sous-type Variant approprié à utiliser, un seul type entier ou DateTime peut être utilisé dans la définition de Variant - par exemple, Variant(Int64, UInt32) n’est pas pris en charge.
Prise en charge du type JSON
ClickPipes prend en charge le type JSON dans les cas suivants :
- Les champs record Avro et message Protobuf peuvent toujours être affectés à une colonne JSON.
- Les champs Avro String et Bytes peuvent être affectés à une colonne JSON si le champ Avro contient réellement des objets JSON String.
- Les types Protobuf String et Bytes peuvent être affectés à une colonne JSON si le champ Protobuf contient réellement des objets JSON String.
- Les champs JSON qui sont toujours des objets JSON peuvent être affectés à une colonne JSON de destination.
Notez que vous devrez modifier manuellement la colonne de destination pour lui attribuer le type JSON souhaité, y compris les chemins fixés ou ignorés.
Types de données Avro pris en charge
ClickPipes prend en charge tous les types primitifs et complexes d’Avro, ainsi que tous les types logiques d’Avro, à l’exception de local-timestamp-millis et local_timestamp-micros. Les types Avro record sont convertis en Tuple, les types array en Array, et map en Map (clés de type chaîne uniquement). De manière générale, les conversions répertoriées ici sont disponibles. Nous recommandons d’utiliser une correspondance exacte des types pour les types numériques Avro, car ClickPipes ne vérifie pas les dépassements de capacité ni les pertes de précision lors des conversions de type.
Sinon, tous les types Avro peuvent être insérés dans une colonne String et seront alors représentés sous la forme d’une chaîne JSON valide.
Types Nullable et unions Avro
Dans Avro, les types Nullable sont définis à l’aide d’un schéma Union de (T, null) ou (null, T), où T est le type Avro de base. Lors de l’inférence de schéma, ces unions sont mappées sur une colonne ClickHouse « Nullable ». Notez que ClickHouse ne prend pas en charge les types
Nullable(Array), Nullable(Map) ou Nullable(Tuple). Les unions Avro avec null pour ces types seront mappées sur des versions non Nullable (les types record Avro sont mappés sur un named Tuple ClickHouse). Les valeurs « null » Avro pour ces types seront insérées comme suit :
- Un Array vide pour un tableau Avro null
- Une Map vide pour une Map Avro null
- Un named Tuple avec toutes les valeurs par défaut/à zéro pour un record Avro null
Types de données Protobuf pris en charge
ClickPipes prend en charge tous les types Protobuf 2 et 3, à l’exception du type group de proto 2, obsolète de longue date. Les conversions de types de base utilisent
les correspondances suivantes :
Les variantes Array, Map et Nullable de tous les types de base sont également prises en charge.
| Type Protobuf | Type 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 |
Pour les types numériques, une correspondance exacte est recommandée afin d’éviter tout dépassement de capacité ou toute perte de précision.
Les types bien connus suivants sont également pris en charge :
| Type bien connu | Type 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) |
Lors de l’inférence de schéma, les champs Protobuf oneof sont, par défaut, mappés sur un Tuple nommé, dans lequel un seul champ au maximum contient une
valeur autre que la valeur par défaut. Ces champs peuvent également être automatiquement mappés sur une colonne Variant, où la valeur active prend le type du
champ constitutif qui est défini. Autrement, chaque champ constitutif peut être mappé manuellement à sa propre colonne ClickHouse ; comme les champs oneof
sont mutuellement exclusifs, une seule colonne sera renseignée pour chaque enregistrement.
Si le schéma Protobuf de niveau supérieur défini pour le ClickPipe contient un seul champ répété qui est lui-même un message Protobuf, l’inférence de schéma et la mise en correspondance des colonnes seront basées sur le champ de message « contenu ». Le message Kafka sera traité comme une liste de tels messages, et un seul message Kafka sera décomposé en plusieurs lignes ClickHouse.
Colonnes virtuelles Kafka
Les colonnes virtuelles suivantes sont prises en charge pour les sources de données de streaming compatibles avec Kafka. Lors de la création d’une nouvelle destination, des colonnes virtuelles peuvent être ajoutées à la table cible à l’aide du bouton Add Column.
| Nom | Description | Type de données recommandé |
|---|
_key | Clé du message Kafka | String |
_timestamp | Horodatage Kafka (précision à la milliseconde) | DateTime64(3) |
_partition | Partition Kafka | Int32 |
_offset | Offset Kafka | Int64 |
_topic | Topic Kafka | String |
_header_keys | Tableau parallèle des clés dans les en-têtes de l’enregistrement | Array(String) |
_header_values | Tableau parallèle des valeurs d’en-tête dans les en-têtes de l’enregistrement | Array(String) |
_raw_message | Message Kafka complet | String |
Notez que la colonne _raw_message n’est recommandée que pour les données JSON.
Pour les cas d’usage où seule la chaîne JSON est requise (par exemple, lors de l’utilisation des fonctions ClickHouse JsonExtract* pour
alimenter une vue matérialisée en aval), la suppression de toutes les colonnes « non virtuelles » peut améliorer les performances de ClickPipes.