Vous pouvez vous inscrire sur la liste d’attente pour l’aperçu privé ici.
Prérequis
Créer votre premier ClickPipe
- Accédez à la SQL Console de votre service ClickHouse Cloud.
- Sélectionnez le bouton
Data Sourcesdans le menu de gauche, puis cliquez sur “Set up a ClickPipe”
- Sélectionnez GCP Pub/Sub comme source de données.
- Remplissez le formulaire en attribuant un nom à votre ClickPipe, en indiquant votre ID de projet GCP et en fournissant le fichier JSON du compte de service du compte de service auquel l’accès à Pub/Sub a été accordé. L’ID du projet doit comporter entre 6 et 30 caractères, peut contenir des lettres minuscules, des chiffres et des tirets, doit commencer par une lettre et ne peut pas se terminer par un tiret.
-
Sélectionnez le topic Pub/Sub depuis lequel ingérer les données. La liste déroulante est automatiquement alimentée à partir des topics de votre projet GCP (triés par ordre alphabétique) une fois vos informations d’identification validées.
- Format des données. ClickPipes interroge le registre de schémas Pub/Sub lorsque vous sélectionnez un topic. Si le topic comporte un schéma Avro ou Protobuf natif attaché, le format des données et le schéma sont détectés automatiquement, et les sélecteurs sont verrouillés sur la version la plus récente du schéma du topic. Les topics sans schéma natif utilisent JSONEachRow par défaut.
- Offset de départ. Choisissez où commencer la consommation. Les options disponibles sont Latest (nouveaux messages uniquement), Earliest (messages conservés les plus anciens) et Seek to Timestamp (avec un sélecteur de date et d’heure en UTC).
- Expression de filtre (facultative). Un filtre d’abonnement Pub/Sub sur les attributs des messages — par exemple,
attributes.type = "telemetry". Les filtres s’appliquent uniquement aux attributs des messages, pas à la charge utile, et ne peuvent pas être modifiés après la création du pipe (pour modifier le filtre, vous devez recréer le pipe). - L’UI affiche un exemple de message du topic sélectionné, avec un bouton Flatten object qui vous permet de prévisualiser la manière dont un JSON imbriqué serait aplati côté destination.
- À l’étape suivante, vous pouvez choisir si vous souhaitez ingérer les données dans une nouvelle table ClickHouse ou réutiliser une table existante. Suivez les instructions affichées à l’écran pour modifier le nom de votre table, le schéma et les paramètres. Vous pouvez voir un aperçu en temps réel de vos modifications dans l’exemple de table en haut de la page.
- Vous pouvez également choisir d’ingérer vos données dans une table ClickHouse existante. Dans ce cas, l’UI vous permettra de mapper les champs de la source vers les champs ClickHouse de la table de destination sélectionnée.
- Enfin, vous pouvez configurer les permissions de l’utilisateur interne ClickPipes.
Full access: accès complet au cluster. Cela peut être utile si vous utilisez une vue matérialisée ou un Dictionary avec la table de destination.Only destination table: permissionsINSERTsur la table de destination uniquement.
- En cliquant sur “Complete Setup”, le système enregistrera votre ClickPipe et vous pourrez le voir apparaître dans le tableau récapitulatif.
- Félicitations ! Vous avez configuré avec succès votre premier ClickPipe Pub/Sub. Il fonctionnera en continu et ingérera des données en temps réel depuis votre topic Pub/Sub dans votre service ClickHouse Cloud.
Abonnements gérés
- L’abonnement géré est nommé
clickpipes-{pipeID}et est créé sur le topic au démarrage du pipe. - Il est configuré avec un ack deadline de 60 secondes, une rétention des messages de 7 jours et l’ordre des messages activé.
- La création de l’abonnement est idempotente — les redémarrages du pipe et les replanifications de réplique réutilisent un abonnement existant si celui-ci pointe déjà vers le topic configuré.
- Lors de la découverte des topics et de l’échantillonnage des messages, ClickPipes crée également des abonnements éphémères de courte durée (
clickpipes-discovery-{uuid}), qui sont supprimés immédiatement une fois l’échantillonnage terminé. - Lorsque le pipe est supprimé, ClickPipes supprime l’abonnement géré dans le cadre de la procédure de suppression.
Formats de données pris en charge
- JSON
- Avro — via les schémas natifs Pub/Sub (encodage BINARY)
- Protobuf — via les schémas natifs Pub/Sub (encodage BINARY)
Compression
- gzip
- zstd
- lz4
- snappy (format avec trames)
La détection automatique est sûre pour les formats textuels comme JSON, car les caractères ASCII imprimables n’entrent jamais en conflit avec les magic bytes de compression. La charge utile décompressée est limitée à 64MB.
Types de données pris en charge
Prise en charge des types standard
- 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
- tous les types ClickHouse LowCardinality
- Map avec des clés et des valeurs de n’importe lequel des types ci-dessus (y compris Nullable)
- Tuple et Array avec des éléments de n’importe lequel des types ci-dessus (y compris Nullable, avec un seul niveau d’imbrication)
- Types SimpleAggregateFunction (pour les destinations AggregatingMergeTree ou SummingMergeTree)
Prise en charge du type Variant
Variant(String, Int64, DateTime)) pour n’importe quel champ JSON
du flux de données source. En raison de la manière dont ClickPipes détermine le sous-type de variant approprié, 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
Colonnes virtuelles Pub/Sub
Add Column.
| Nom | Description | Type de données recommandé |
|---|---|---|
| _message_id | ID de message Pub/Sub attribué par le broker | String |
| _publish_time | timestamp de publication Pub/Sub (précision à la milliseconde, UTC) | DateTime64(3) |
| _ordering_key | clé d’ordonnancement Pub/Sub (chaîne vide lorsqu’aucune clé n’est définie pour le message) | String |
| _attributes | attributs de message Pub/Sub définis par l’utilisateur | Map(String, String) |
| _raw_message | charge utile complète du message Pub/Sub (désactivée par défaut) | String |
_raw_message peut être utilisé lorsqu’on a uniquement besoin de la charge utile complète du message Pub/Sub (par exemple, en utilisant les fonctions ClickHouse JsonExtract* pour alimenter une vue matérialisée en aval). Pour ces pipes, supprimer toutes les colonnes « non virtuelles » peut améliorer les performances de ClickPipes.
Limites
- DEFAULT n’est pas pris en charge.
- La taille des messages individuels est limitée par défaut à 16MB (non compressés) avec la plus petite taille de réplique (XS), et à 32MB (non compressés) avec des répliques plus grandes. Les messages qui dépassent cette limite sont rejetés avec une erreur. Si vous devez traiter des messages plus volumineux, veuillez contacter l’assistance.
- Les filtres d’abonnement Pub/Sub sont immuables — modifier l’expression de filtre nécessite de recréer le pipe.
- Les filtres s’appliquent uniquement aux attributs des messages, pas à la charge utile du message.
Performances
Traitement par lots
- La taille du lot a atteint la taille maximale (100 000 lignes ou 32 MB par 1 GB de mémoire de réplique)
- Le lot est resté ouvert pendant la durée maximale autorisée (5 secondes)
Latence
Clés d’ordonnancement
Mise à l’échelle
Garanties de livraison
_message_id (chaque ID de message Pub/Sub est unique dans un topic).