Passer au contenu principal
Dans les guides précédents, vous avez interrogé directement des formats de table ouverts et chargé des données dans MergeTree pour des analyses rapides. Dans de nombreuses architectures, les données doivent aussi circuler dans l’autre sens, de ClickHouse vers des formats de table ouverts. Deux scénarios courants motivent cette approche :
  • Déchargement vers un stockage à long terme - Les données arrivent dans ClickHouse comme couche d’analytique en temps réel, alimentant des tableaux de bord et le reporting opérationnel. Une fois qu’elles sortent de leur fenêtre temps réel, elles peuvent être écrites vers Iceberg sur du stockage objet pour une conservation durable et économique dans un format interopérable.
  • ETL inversé - Les transformations, agrégations et enrichissements effectués dans ClickHouse produisent des jeux de données dérivés que des outils en aval et d’autres équipes doivent consommer. Écrire ces résultats dans des tables Iceberg les rend disponibles dans l’ensemble de l’écosystème de données.
Dans les deux cas, INSERT INTO SELECT vous permet de déplacer des données depuis des tables ClickHouse vers des tables Iceberg stockées sur du stockage objet.
L’écriture vers des formats de table ouverts n’est actuellement prise en charge que pour les tables Iceberg. La prise en charge partielle des tables Delta Lake est en cours de développement. Les tables ne doivent pas être gérées par un catalog.

Préparer un jeu de données source

Pour ce guide, nous utiliserons le jeu de données UK Price Paid — un registre public de toutes les transactions portant sur des biens résidentiels en Angleterre et au pays de Galles.

Créer et peupler une table MergeTree

Remplissez la table directement à partir de la source CSV publique :

Écrire des données dans une table Iceberg

Créer la table Iceberg

Pour écrire des données dans Iceberg, créez une table à l’aide du table engine IcebergS3. Notez que le schéma doit être simplifié par rapport à celui de la table source MergeTree. ClickHouse prend en charge un système de types plus riche qu’Iceberg et que les fichiers Parquet sous-jacents : des types tels que Enum, LowCardinality et UInt8 ne sont pas pris en charge par Iceberg et doivent être convertis en types compatibles.

Insérer un sous-ensemble de données

Utilisez INSERT INTO SELECT pour insérer dans la table Iceberg des données provenant de la table MergeTree. Dans cet exemple, nous insérons uniquement les transactions de Londres :

Interroger la table Iceberg

Les données sont désormais stockées au format Iceberg dans un stockage objet et peuvent être interrogées depuis ClickHouse, ou depuis tout autre outil capable de lire Iceberg :

Écrire des résultats agrégés

Les tables Iceberg ne servent pas uniquement à stocker des lignes brutes. Elles peuvent aussi contenir le résultat d’agrégations et de transformations, c’est-à-dire les résultats de processus ETL exécutés dans ClickHouse. C’est utile pour publier des résumés précalculés dans un lakehouse en vue d’une consommation en aval.

Créer une table Iceberg pour les données agrégées

Insérer des données agrégées

Calculez les prix moyens des biens immobiliers par ville et écrivez directement les résultats dans Iceberg :

Interroger la table agrégée

D’autres outils — et d’autres instances ClickHouse — peuvent désormais lire cet ensemble de données précalculé :
Dernière modification le 29 juin 2026