---
title: "ClickHouse - Interroger des tables Iceberg et Delta Lake et ingérer des fichiers en continu"
description: "Découvrez comment interroger des tables Iceberg et Delta Lake stockées dans OVHcloud Object Storage depuis ClickHouse et charger les nouveaux fichiers en continu"
url: https://docs.ovhcloud.com/fr/guides/public-cloud/data-analytics/analytics/clickhouse-iceberg-delta-s3queue
lang: fr
lastUpdated: 2026-10-13
---
> For AI agents: the complete documentation index is available at https://docs.ovhcloud.com/fr/llms.txt, the full documentation bundle is available at https://docs.ovhcloud.com/fr/llms-full.txt.

# ClickHouse - Interroger des tables Iceberg et Delta Lake et ingérer des fichiers en continu

## Objectif

Si votre plateforme de données stocke des tables dans des formats ouverts comme Apache Iceberg ou Delta Lake dans un bucket OVHcloud Object Storage, ClickHouse peut les interroger sur place, sans les copier. ClickHouse peut aussi surveiller un bucket et charger automatiquement chaque nouveau fichier dans une table.

**Ce guide explique comment interroger des tables Iceberg et Delta Lake, et comment ingérer des fichiers en continu avec le moteur `S3Queue`, depuis un cluster Public Cloud Analytics avec ClickHouse.**

## Prérequis

- Disposer d'un [projet Public Cloud](https://www.ovhcloud.com/fr/public-cloud/) dans votre compte OVHcloud.
- Disposer d'un cluster ClickHouse en cours d'exécution sur OVHcloud Public Cloud et acceptant les connexions entrantes. Consultez les guides « [Comment créer un cluster ClickHouse](https://docs.ovhcloud.com/fr/guides/public-cloud/data-analytics/analytics/clickhouse-create-cluster.md) » et « [Comment se connecter à un cluster ClickHouse](https://docs.ovhcloud.com/fr/guides/public-cloud/data-analytics/analytics/clickhouse-connect-cluster-cli.md) ».
- Disposer du mot de passe de l'utilisateur `avnadmin` du cluster ClickHouse.
- Disposer d'un bucket OVHcloud Object Storage créé avec l'**API compatible S3<sup>1</sup>**, et d'un utilisateur S3 ayant accès à ce bucket. Consultez les guides « [Object Storage - Premiers pas](https://docs.ovhcloud.com/fr/guides/storage-and-backup/object-storage/s3-getting-started-with-object-storage.md) » et « [Object Storage - Gestion des identités et des accès](https://docs.ovhcloud.com/fr/guides/storage-and-backup/object-storage/s3-identity-and-access-management.md) ».
- Avoir lu le guide « [ClickHouse - Interroger des fichiers stockés dans OVHcloud Object Storage](https://docs.ovhcloud.com/fr/guides/public-cloud/data-analytics/analytics/clickhouse-query-object-storage.md) » pour suivre les exemples : il explique comment construire l'URL des fichiers et comment enregistrer vos identifiants S3 dans une named collection.

## En pratique

### Avant de commencer - Bucket et utilisateur S3

- Créez le bucket avec l'**API compatible S3**.
- Vous pouvez activer le chiffrement côté serveur avec des clés gérées par OVHcloud (SSE-OMK) sur le bucket : il est transparent pour ClickHouse et pour les outils qui écrivent vos tables.
- Donnez à l'utilisateur S3 l'accès au bucket. Les outils qui **écrivent** des tables Iceberg et Delta Lake (par exemple PyIceberg ou delta-rs) ont besoin d'autres droits que la lecture et l'écriture d'objets, comme les envois en plusieurs parties. S'ils échouent avec `Access Denied`, donnez à l'utilisateur S3 toutes les actions sur ce seul bucket :

```json
{
  "Statement": [
    {
      "Sid": "LakehouseBucket",
      "Effect": "Allow",
      "Action": ["s3:*"],
      "Resource": [
        "arn:aws:s3:::<bucket>",
        "arn:aws:s3:::<bucket>/*"
      ]
    }
  ]
}
```

Dans les exemples de moteurs de table `IcebergS3` et `DeltaLake` ci-dessous, `lake_s3` est une named collection qui pointe vers un dossier de votre bucket :

```sql
CREATE NAMED COLLECTION lake_s3 AS
    url = 'https://s3.<region>.io.cloud.ovh.net/<bucket>/lakehouse/',
    access_key_id = '<cle_acces>',
    secret_access_key = '<cle_secrete>';
```

### Interroger une table Iceberg

Indiquez l'URL du dossier de la table Iceberg (celui qui contient ses dossiers `metadata` et `data`) et vos clés S3 à la fonction de table `icebergS3`. ClickHouse lit la dernière version de la table et détecte son schéma :

```sql
SELECT city, count(), sum(amount)
FROM icebergS3('https://s3.<region>.io.cloud.ovh.net/<bucket>/lakehouse/warehouse/demo/sales/', '<cle_acces>', '<cle_secrete>')
GROUP BY city;
```

Pour interroger la table régulièrement, créez une table avec le moteur `IcebergS3` :

```sql
CREATE TABLE sales_iceberg
ENGINE = IcebergS3(lake_s3, filename = 'warehouse/demo/sales/');

SELECT count() FROM sales_iceberg;
```

:::warning
Utilisez les tables Iceberg en **lecture seule** depuis ClickHouse. L'écriture dans une table Iceberg depuis ClickHouse est une fonctionnalité bêta : elle est refusée par défaut et ne doit pas être activée. Continuez à écrire vos tables Iceberg avec les outils de votre plateforme de données.
:::

ClickHouse lit la table directement dans son dossier du bucket. La connexion de ClickHouse à un catalogue Iceberg (moteur de base de données `DataLakeCatalog`) n'est pas disponible.

### Interroger une table Delta Lake

Indiquez l'URL du dossier de la table Delta Lake (celui qui contient son dossier `_delta_log`) et vos clés S3 à la fonction de table `deltaLakeS3`, ou créez une table avec le moteur `DeltaLake` :

```sql
SELECT day, round(sum(amount), 1)
FROM deltaLakeS3('https://s3.<region>.io.cloud.ovh.net/<bucket>/lakehouse/delta/sales/', '<cle_acces>', '<cle_secrete>')
GROUP BY day
ORDER BY day;

CREATE TABLE sales_delta
ENGINE = DeltaLake(lake_s3, filename = 'delta/sales/');
```

### Ingérer de nouveaux fichiers en continu avec S3Queue

Le moteur `S3Queue` surveille un dossier de votre bucket et traite chaque nouveau fichier une seule fois. Associé à une vue matérialisée, il charge dans une table ClickHouse chaque fichier déposé dans le dossier, sans tâche externe.

1. Créez la table qui reçoit les données :

   ```sql
   CREATE TABLE events (id UInt64, kind String)
   ENGINE = MergeTree
   ORDER BY id;
   ```

2. Créez la file d'attente sur le dossier à surveiller. `mode = 'unordered'` traite les fichiers dans n'importe quel ordre, chacun une seule fois :

   ```sql
   CREATE TABLE events_queue (id UInt64, kind String)
   ENGINE = S3Queue('https://s3.<region>.io.cloud.ovh.net/<bucket>/queue/*.csv', '<cle_acces>', '<cle_secrete>', 'CSVWithNames')
   SETTINGS mode = 'unordered';
   ```

3. Créez une vue matérialisée qui déplace les lignes de la file d'attente vers la table :

   ```sql
   CREATE MATERIALIZED VIEW events_mv TO events
   AS SELECT * FROM events_queue;
   ```

Désormais, chaque fichier CSV écrit dans le dossier `queue` est chargé automatiquement dans `events` :

```sql
SELECT kind, count() FROM events GROUP BY kind;
```

### Résolution des problèmes

| Erreur                                                                        | Cause et solution                                                                                                                                                                                |
| ----------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `Access Denied` lorsque votre plateforme de données écrit la table            | L'utilisateur S3 ne dispose pas de toutes les actions nécessaires à l'outil d'écriture. Reportez-vous à la section « Avant de commencer » ci-dessus.                                             |
| `Insert into iceberg is in beta`                                              | L'écriture dans des tables Iceberg depuis ClickHouse n'est pas prise en charge. Écrivez la table avec votre plateforme de données.                                                               |
| `Only Replicated database can be created through SQL`                         | Les moteurs de base de données comme `DataLakeCatalog` ne sont pas disponibles. Utilisez les fonctions de table `icebergS3` et `deltaLakeS3` ou les moteurs de table `IcebergS3` et `DeltaLake`. |
| `HTTP response code: 403 … Please check your AWS credentials and permissions` | Clé d'accès ou clé secrète incorrecte, ou l'utilisateur S3 n'a pas accès au bucket.                                                                                                              |

## Aller plus loin

- [Documentation ClickHouse - fonctions de table iceberg](https://clickhouse.com/docs/fr/reference/functions/table-functions/iceberg)
- [Documentation ClickHouse - fonctions de table deltaLake](https://clickhouse.com/docs/fr/reference/functions/table-functions/deltalake)
- [Documentation ClickHouse - moteur de table S3Queue](https://clickhouse.com/docs/fr/reference/engines/table-engines/integrations/s3queue)
- [ClickHouse - Interroger des fichiers stockés dans OVHcloud Object Storage](https://docs.ovhcloud.com/fr/guides/public-cloud/data-analytics/analytics/clickhouse-query-object-storage.md)

Nous serions ravis de répondre à vos questions et apprécions tout retour que vous pourriez nous faire.

Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page [Professional Services](https://www.ovhcloud.com/fr/professional-services/) pour obtenir un devis et faire analyser votre projet par nos experts.

Vous êtes sur Discord ? Rejoignez notre chaîne via [https://discord.gg/ovhcloud](https://discord.gg/ovhcloud) et interagissez directement avec l'équipe qui développe notre service Analytics !

Rejoignez notre [communauté d'utilisateurs](https://community.ovhcloud.com/).

1
 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.