Skip to main content
Le ClickPipe ABS offre une solution entièrement gérée et résiliente pour ingérer des données depuis Azure Blob Storage dans ClickHouse Cloud. Il prend en charge les modes d’ingestion ponctuelle et continue avec une sémantique exactly-once. Les ClickPipes ABS peuvent être déployés et gérés manuellement à l’aide de la ClickPipes UI, ainsi que par programmation à l’aide d’OpenAPI et de Terraform.

Formats pris en charge

Fonctionnalités

Ingestion en une seule fois

Le ClickPipe ABS chargera dans la table de destination ClickHouse, en un seul lot, tous les fichiers du conteneur spécifié correspondant à un motif. Une fois la tâche d’ingestion terminée, le ClickPipe s’arrête automatiquement. Ce mode d’ingestion en une seule fois offre une sémantique exactly-once, ce qui assure que chaque fichier est traité de manière fiable, sans doublons.

Ingestion en continu

Lorsque l’ingestion en continu est activée, ClickPipes ingère les données en continu depuis le chemin spécifié. Pour déterminer l’ordre d’ingestion, le ClickPipe ABS s’appuie sur l’ordre lexicographique implicite des fichiers.

Ordre lexicographique

Le ClickPipe ABS suppose que les fichiers sont ajoutés à un conteneur dans l’ordre lexicographique et s’appuie sur cet ordre implicite pour ingérer les fichiers séquentiellement. Cela signifie que tout nouveau fichier doit se trouver après le dernier fichier ingéré dans l’ordre lexicographique. Par exemple, des fichiers nommés file1, file2 et file3 seront ingérés séquentiellement, mais si un nouveau fichier file 0 est ajouté au conteneur, il sera ignoré, car son nom ne se trouve pas après celui du dernier fichier ingéré dans l’ordre lexicographique. Dans ce mode, le ClickPipe ABS effectue un chargement initial de tous les fichiers dans le chemin spécifié, puis recherche de nouveaux fichiers à un intervalle configurable (30 secondes par défaut). Il est impossible de démarrer l’ingestion à partir d’un fichier spécifique ou d’un point précis dans le temps — ClickPipes chargera toujours tous les fichiers du chemin spécifié.

Correspondance des motifs de fichiers

Les Object Storage ClickPipes utilisent la norme POSIX pour la correspondance des motifs de fichiers. Tous les motifs respectent la casse et correspondent au chemin complet après le nom du conteneur. Pour de meilleures performances, utilisez le motif le plus spécifique possible (par ex., data-2024-*.csv au lieu de *.csv).

Motifs pris en charge

Exemples :
  • https://storageaccount.blob.core.windows.net/container/folder/*.csv
  • https://storageaccount.blob.core.windows.net/container/logs/**/data.json
  • https://storageaccount.blob.core.windows.net/container/file-?.parquet
  • https://storageaccount.blob.core.windows.net/container/data-2024-*.csv.gz

Motifs non pris en charge

Exemples :
  • https://storageaccount.blob.core.windows.net/container/{documents-01,documents-02}.json
  • https://storageaccount.blob.core.windows.net/container/file-{1..100}.csv
  • https://storageaccount.blob.core.windows.net/container/{logs,metrics}/data.parquet

Sémantique exactly-once

Différents types de défaillances peuvent survenir lors de l’ingestion de grands jeux de données, ce qui peut entraîner des insertions partielles ou des doublons. Les Object Storage ClickPipes sont résistants aux échecs d’insertion et offrent une sémantique exactly-once. Cela est possible grâce à l’utilisation de tables de staging. Les données sont d’abord insérées dans les tables de staging. Si un problème survient lors de cette insertion, la table de staging peut être tronquée et l’insertion peut être relancée depuis un état propre. Ce n’est que lorsque l’insertion est terminée avec succès que les partitions de la table de staging sont déplacées vers la table cible. Pour en savoir plus sur cette stratégie, consultez cet article de blog.

Colonnes virtuelles

Pour suivre les fichiers qui ont été ingérés, incluez la colonne virtuelle _file dans la liste de mappage des colonnes. La colonne virtuelle _file contient le nom de fichier de l’objet source, ce qui permet d’interroger les fichiers qui ont été traités.

Contrôle d’accès

Autorisations

Le ClickPipe ABS ne prend en charge que les conteneurs privés. Les conteneurs publics ne sont pas pris en charge. Les conteneurs doivent autoriser les actions s3:GetObject et s3:ListBucket dans la stratégie du bucket.

Authentification

L’authentification Microsoft Entra ID (y compris Managed Identities) n’est pas prise en charge pour le moment.
L’authentification d’Azure Blob Storage utilise une chaîne de connexion, qui prend en charge les clés d’accès ainsi que les signatures d’accès partagé (SAS).

Clé d’accès

Pour vous authentifier à l’aide d’une clé d’accès au compte, fournissez une chaîne de connexion au format suivant :
Vous trouverez le nom de votre compte de stockage et votre clé d’accès dans Azure Portal, sous Storage Account > Access keys.

Signature d’accès partagé (SAS)

Pour vous authentifier à l’aide d’une signature d’accès partagé (SAS), fournissez une chaîne de connexion qui inclut le jeton SAS :
Générez un SAS token dans l’Azure Portal, sous Storage Account > Shared access signature, avec les autorisations appropriées (Read, List) pour le conteneur et les blobs que vous souhaitez ingérer.

Accès réseau

Les ABS ClickPipes utilisent deux chemins réseau distincts, respectivement pour la découverte des métadonnées et l’ingestion des données : le service ClickPipes et le service ClickHouse Cloud. Si vous souhaitez ajouter une couche de sécurité réseau supplémentaire (par ex. pour des raisons de conformité), l’accès réseau doit être configuré pour les deux chemins.
Le contrôle d’accès basé sur les adresses IP ne fonctionne pas si votre conteneur Azure Blob Storage se trouve dans la même région Azure que votre service ClickHouse Cloud. Lorsque les deux services sont colocalisés, le trafic transite par le réseau interne d’Azure plutôt que par l’Internet public.
  • Pour le contrôle d’accès basé sur les adresses IP, les règles réseau IP de votre pare-feu Azure Storage doivent autoriser les adresses IP statiques de la région du service ClickPipes indiquées ici, ainsi que les adresses IP statiques du service ClickHouse Cloud. Pour obtenir les adresses IP statiques de votre région ClickHouse Cloud, ouvrez un terminal et exécutez :

Paramètres avancés

ClickPipes fournit des valeurs par défaut adaptées qui couvrent les besoins de la plupart des cas d’utilisation. Si votre cas d’utilisation nécessite un réglage plus fin, vous pouvez ajuster les paramètres suivants :

Mise à l’échelle

Les Object Storage ClickPipes sont mis à l’échelle en fonction de la taille minimale du service ClickHouse, telle que définie par les paramètres d’autoscaling vertical configurés. La taille du ClickPipe est déterminée lors de la création du pipe. Les modifications ultérieures des paramètres du service ClickHouse n’affecteront pas la taille du ClickPipe. Pour augmenter le débit lors de tâches d’ingestion volumineuses, nous recommandons de mettre à l’échelle le service ClickHouse avant de créer le ClickPipe.

Limitations connues

Taille des fichiers

ClickPipes n’essaiera d’ingérer que les objets dont la taille est de 10 GB ou moins. Si un fichier dépasse 10 GB, une erreur sera ajoutée à la table d’erreurs dédiée de ClickPipes.

Latence

Pour les conteneurs contenant plus de 100 000 fichiers, les opérations LIST d’Azure Blob Storage ajoutent de la latence lors de la détection de nouveaux fichiers, en plus de l’intervalle d’interrogation par défaut :
  • < 100k fichiers: ~30 secondes (intervalle d’interrogation par défaut)
  • 100k fichiers: ~40-45 secondes
  • 250k fichiers: ~55-70 secondes
  • 500k+ fichiers: peut dépasser 90 secondes
Pour l’ingestion en continu, ClickPipes doit analyser le conteneur pour identifier les nouveaux fichiers dont l’ordre lexicographique est supérieur à celui du dernier fichier ingéré. Nous recommandons d’organiser les fichiers dans des conteneurs plus petits ou d’utiliser des structures de répertoires hiérarchiques afin de réduire le nombre de fichiers par opération de listing.

Prise en charge des vues

Les vues matérialisées sur la table cible sont également prises en charge. ClickPipes crée des tables de staging non seulement pour la table cible, mais aussi pour toute vue matérialisée qui en dépend. Nous ne créons pas de tables de staging pour les vues non matérialisées. Cela signifie que si vous avez une table cible avec une ou plusieurs vues matérialisées en aval, ces vues matérialisées doivent éviter de sélectionner des données via une vue à partir de la table cible. Sinon, il se peut que des données manquent dans la vue matérialisée.

Dépendances

Toute modification de la table de destination, de ses vues matérialisées (y compris les vues matérialisées en cascade) ou des tables cibles de ces vues matérialisées pendant l’exécution du ClickPipe entraînera des erreurs récupérables. Pour modifier le schéma de ces dépendances, vous devez mettre le ClickPipe en pause, appliquer les modifications, puis le reprendre.
Dernière modification le 23 juillet 2026