> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Interroger directement les formats de table ouverts

> Utilisez les fonctions de table ClickHouse pour lire des tables Iceberg, Delta Lake, Hudi et Paimon dans le stockage objet, sans configuration préalable.

export const ExperimentalBadge = () => {
  return <div className="experimentalBadge">
            <div className="experimentalIcon">
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
                <path strokeWidth="1.25" d="M5.5 2H10.5" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M9.50015 2V6.19625L13.4283 12.7425C13.4738 12.8183 13.4985 12.9049 13.4996 12.9934C13.5008 13.0818 13.4785 13.169 13.435 13.246C13.3914 13.323 13.3283 13.3871 13.2519 13.4317C13.1755 13.4764 13.0886 13.4999 13.0002 13.5H3.00015C2.91164 13.5 2.8247 13.4766 2.74822 13.432C2.67174 13.3874 2.60847 13.3233 2.56487 13.2463C2.52126 13.1693 2.49889 13.082 2.50004 12.9935C2.50119 12.905 2.52582 12.8184 2.5714 12.7425L6.50015 6.19625V2" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
                <path strokeWidth="1.25" d="M4.47656 9.56754C5.30344 9.41254 6.47656 9.47942 7.99969 10.25C10.0153 11.2707 11.4216 11.0569 12.2184 10.7282" stroke="currentColor" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
        </div>
            Fonctionnalité expérimentale. <u><a href="/docs/beta-and-experimental-features#experimental-features">En savoir plus.</a></u>
        </div>;
};

ClickHouse fournit des fonctions de table pour interroger des données stockées dans des formats de table ouverts directement dans le stockage objet. Cela ne nécessite pas de connexion à un catalogue externe : les données sont interrogées sur place, de la même manière qu’AWS Athena lit depuis S3.

Vous transmettez le chemin de stockage et les identifiants directement dans l’appel de fonction, et ClickHouse s’occupe du reste. Toute la syntaxe et toutes les fonctions de ClickHouse SQL sont disponibles, et les requêtes bénéficient de l’exécution parallélisée de ClickHouse et de son [lecteur Parquet natif performant](https://clickhouse.com/blog/clickhouse-and-parquet-a-foundation-for-fast-lakehouse-analytics).

<Info>
  **Server, local ou chDB**

  Les étapes de ce guide peuvent être exécutées à l’aide d’une installation existante de ClickHouse server. Pour des requêtes ad hoc, vous pouvez aussi utiliser [clickhouse-local](/fr/concepts/features/tools-and-utilities/clickhouse-local) et suivre le même workflow sans démarrer de serveur. Moyennant quelques ajustements mineurs, le processus peut également être effectué avec la distribution intégrée au processus de ClickHouse, [chDB](/fr/products/chdb/index).
</Info>

Les exemples suivants utilisent le dataset [hits](/fr/get-started/sample-datasets/star-schema) stocké au format lakehouse sur S3. Pour chaque format lakehouse, des fonctions dédiées existent pour chaque fournisseur de stockage objet.

<Tabs>
  <Tab title="Apache Iceberg">
    La fonction de table [`iceberg`](/fr/reference/functions/table-functions/iceberg) (alias de `icebergS3`) lit les tables Iceberg directement depuis l'object storage. Des variantes existent pour chaque backend de stockage : `icebergS3`, `icebergAzure`, `icebergHDFS` et `icebergLocal`.

    **Exemple de syntaxe :**

    ```sql theme={null}
    icebergS3(url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])

    icebergAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])

    icebergLocal(path_to_table, [,format] [,compression_method])
    ```

    <Info>
      **Prise en charge de GCS**

      La variante S3 des fonctions peut être utilisée avec Google Cloud Storage (GCS).
    </Info>

    **Exemple :**

    ```sql theme={null}
    SELECT
        url,
        count() AS cnt
    FROM icebergS3('https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/')
    GROUP BY url
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ```response theme={null}
    ┌─url────────────────────────────────────────────────┬─────cnt─┐
    │ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │ -- 3.29 million
    │ http://kinopoisk.ru                                │ 1625250 │ -- 1.63 million
    │ http://bdsm_po_yers=0&with_video                   │  791465 │
    │ http://video.yandex                                │  582400 │
    │ http://smeshariki.ru/region                        │  514984 │
    └────────────────────────────────────────────────────┴─────────┘

    5 rows in set. Elapsed: 3.375 sec. Processed 100.00 million rows, 9.98 GB (29.63 million rows/s., 2.96 GB/s.)
    Peak memory usage: 10.48 GiB.
    ```

    ### Variante de cluster

    La fonction [`icebergS3Cluster`](/fr/reference/functions/table-functions/icebergCluster) distribue les lectures sur plusieurs nœuds d'un cluster ClickHouse. Le nœud initiateur établit des connexions vers tous les nœuds et distribue dynamiquement les fichiers de données. Chaque nœud worker demande et traite des tâches jusqu'à ce que tous les fichiers aient été lus. `icebergCluster` est un alias de `icebergS3Cluster`. Des variantes existent également pour Azure ([`icebergAzureCluster`](/fr/reference/functions/table-functions/icebergCluster)) et HDFS ([`icebergHDFSCluster`](/fr/reference/functions/table-functions/icebergCluster)).

    **Exemple de syntaxe :**

    ```sql theme={null}
    icebergS3Cluster(cluster_name, url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])
    -- icebergCluster is an alias for icebergS3Cluster

    icebergAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
    ```

    **Exemple (ClickHouse Cloud) :**

    ```sql theme={null}
    SELECT
        url,
        count() AS cnt
    FROM icebergS3Cluster(
        'default',
        'https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/'
    )
    GROUP BY url
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ### Moteur de table

    Plutôt que d'utiliser la table function dans chaque requête, vous pouvez créer une table persistante à l'aide du [moteur de table `Iceberg`](/fr/reference/engines/table-engines/integrations/iceberg). Les données résident toujours dans l'object storage et sont lues à la demande — aucune donnée n'est copiée dans ClickHouse. L'avantage est que la table definition est stockée dans ClickHouse et peut être partagée entre utilisateurs et sessions sans que chaque utilisateur ait à spécifier le path de stockage et les credentials. Des variantes du moteur existent pour chaque backend de stockage : `IcebergS3` (ou l'alias `Iceberg`), `IcebergAzure`, `IcebergHDFS` et `IcebergLocal`.

    Le table engine et la table function prennent tous deux en charge la [mise en cache des données](/fr/reference/engines/table-engines/integrations/iceberg#data-cache), en utilisant le même mécanisme de mise en cache que les moteurs de stockage S3, AzureBlobStorage et HDFS. De plus, un [metadata cache](/fr/reference/engines/table-engines/integrations/iceberg#metadata-cache) stocke les informations des fichiers manifest en mémoire, réduisant ainsi les lectures répétées des métadonnées Iceberg. Ce cache est activé par défaut via le paramètre `use_iceberg_metadata_files_cache`.

    **Exemple de syntaxe :**

    Le moteur de table `Iceberg` est un alias de `IcebergS3`.

    ```sql theme={null}
    CREATE TABLE iceberg_table
        ENGINE = IcebergS3(url [, NOSIGN | access_key_id, secret_access_key, [session_token]] [,format] [,compression_method])

    CREATE TABLE iceberg_table
        ENGINE = IcebergAzure(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])

    CREATE TABLE iceberg_table
        ENGINE = IcebergLocal(path_to_table, [,format] [,compression_method])
    ```

    <Info>
      **Prise en charge de GCS**

      La variante S3 du moteur de table peut être utilisée avec Google Cloud Storage (GCS).
    </Info>

    **Exemple :**

    ```sql theme={null}
    CREATE TABLE hits_iceberg
        ENGINE = IcebergS3('https://datasets-documentation.s3.amazonaws.com/lake_formats/iceberg/')

    SELECT
        url,
        count() AS cnt
    FROM hits_iceberg
    GROUP BY url
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ```response theme={null}
    ┌─url────────────────────────────────────────────────┬─────cnt─┐
    │ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │
    │ http://kinopoisk.ru                                │ 1625250 │
    │ http://bdsm_po_yers=0&with_video                   │  791465 │
    │ http://video.yandex                                │  582400 │
    │ http://smeshariki.ru/region                        │  514984 │
    └────────────────────────────────────────────────────┴─────────┘

    5 rows in set. Elapsed: 2.737 sec. Processed 100.00 million rows, 9.98 GB (36.53 million rows/s., 3.64 GB/s.)
    Peak memory usage: 10.53 GiB.
    ```

    Pour les fonctionnalités prises en charge, notamment le partition pruning, la schema evolution, le time travel, le caching et bien d'autres, consultez la [matrice de compatibilité](/fr/guides/use-cases/data-warehousing/support-matrix#format-support). Pour la référence complète, consultez la documentation de la [fonction de table `iceberg`](/fr/reference/functions/table-functions/iceberg) et du [moteur de table `Iceberg`](/fr/reference/engines/table-engines/integrations/iceberg).
  </Tab>

  <Tab title="Delta Lake">
    La fonction de table [`deltaLake`](/fr/reference/functions/table-functions/deltalake) (alias de `deltaLakeS3`) lit les tables Delta Lake depuis l'object storage. Des variantes existent pour d'autres backends : `deltaLakeAzure` et `deltaLakeLocal`.

    **Exemple de syntaxe :**

    ```sql theme={null}
    deltaLakeS3(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])

    deltaLakeAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])

    deltaLakeLocal(path, [,format])
    ```

    <Info>
      **Prise en charge de GCS**

      La variante S3 des fonctions peut être utilisée avec Google Cloud Storage (GCS).
    </Info>

    **Exemple :**

    ```sql theme={null}
    SELECT
        URL,
        count() AS cnt
    FROM deltaLake('https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/')
    GROUP BY URL
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ```response theme={null}
    ┌─URL────────────────────────────────────────────────┬─────cnt─┐
    │ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │ -- 3.29 million
    │ http://kinopoisk.ru                                │ 1625250 │ -- 1.63 million
    │ http://bdsm_po_yers=0&with_video                   │  791465 │
    │ http://video.yandex                                │  582400 │
    │ http://smeshariki.ru/region                        │  514984 │
    └────────────────────────────────────────────────────┴─────────┘

    5 rows in set. Elapsed: 3.878 sec. Processed 100.00 million rows, 14.82 GB (25.78 million rows/s., 3.82 GB/s.)
    Peak memory usage: 9.16 GiB.
    ```

    ### Variante de cluster

    La fonction [`deltaLakeCluster`](/fr/reference/functions/table-functions/deltalakeCluster) distribue les lectures sur plusieurs nœuds d'un cluster ClickHouse. Le nœud initiateur répartit dynamiquement les fichiers de données vers les nœuds worker pour un traitement parallèle. `deltaLakeS3Cluster` est un alias de `deltaLakeCluster`. Une variante Azure ([`deltaLakeAzureCluster`](/fr/reference/functions/table-functions/deltalakeCluster)) est également disponible.

    **Exemple de syntaxe :**

    ```sql theme={null}
    deltaLakeCluster(cluster_name, url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])
    -- deltaLakeS3Cluster is an alias for deltaLakeCluster

    deltaLakeAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
    ```

    <Info>
      **Prise en charge de GCS**

      La variante S3 de ces fonctions peut être utilisée avec Google Cloud Storage (GCS).
    </Info>

    **Exemple (ClickHouse Cloud) :**

    ```sql theme={null}
    SELECT
        URL,
        count() AS cnt
    FROM deltaLakeCluster(
        'default',
        'https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/'
    )
    GROUP BY URL
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ### Moteur de table

    En alternative à l'utilisation de la table function dans chaque requête, vous pouvez créer une persistent table à l'aide du [`DeltaLake` table engine](/fr/reference/engines/table-engines/integrations/deltalake) si vous utilisez un stockage compatible S3. Les données résident toujours dans l'object storage et sont lues à la demande — aucune donnée n'est copiée dans ClickHouse. L'avantage est que la table definition est stockée dans ClickHouse et peut être partagée entre utilisateurs et sessions sans que chaque utilisateur ait à spécifier le path de stockage et les credentials.

    Le table engine et la table function prennent tous deux en charge la [mise en cache des données](/fr/reference/engines/table-engines/integrations/deltalake#data-cache), en utilisant le même mécanisme de mise en cache que les moteurs de stockage S3, AzureBlobStorage et HDFS.

    **Exemple de syntaxe :**

    ```sql theme={null}
    CREATE TABLE delta_table
        ENGINE = DeltaLake(url [,aws_access_key_id, aws_secret_access_key])
    ```

    <Info>
      **Prise en charge de GCS**

      Ce moteur de table peut être utilisé pour Google Cloud Storage (GCS).
    </Info>

    **Exemple :**

    ```sql theme={null}
    CREATE TABLE hits_delta
        ENGINE = DeltaLake('https://datasets-documentation.s3.amazonaws.com/lake_formats/delta_lake/')

    SELECT
        URL,
        count() AS cnt
    FROM hits_delta
    GROUP BY URL
    ORDER BY cnt DESC
    LIMIT 5
    ```

    ```response theme={null}
    ┌─URL────────────────────────────────────────────────┬─────cnt─┐
    │ http://liver.ru/belgorod/page/1006.jки/доп_приборы │ 3288173 │
    │ http://kinopoisk.ru                                │ 1625250 │
    │ http://bdsm_po_yers=0&with_video                   │  791465 │
    │ http://video.yandex                                │  582400 │
    │ http://smeshariki.ru/region                        │  514984 │
    └────────────────────────────────────────────────────┴─────────┘

    5 rows in set. Elapsed: 3.608 sec. Processed 100.00 million rows, 14.82 GB (27.72 million rows/s., 4.11 GB/s.)
    Peak memory usage: 9.27 GiB.
    ```

    Pour les fonctionnalités prises en charge, notamment les backends de stockage, la mise en cache et bien d'autres, consultez la [matrice de compatibilité](/fr/guides/use-cases/data-warehousing/support-matrix#format-support). Pour une référence complète, consultez la documentation de la [table function `deltaLake`](/fr/reference/functions/table-functions/deltalake) et du [table engine `DeltaLake`](/fr/reference/engines/table-engines/integrations/deltalake).
  </Tab>

  <Tab title="Apache Hudi">
    La fonction de table [`hudi`](/fr/reference/functions/table-functions/hudi) lit des tables Hudi à partir de S3.

    **Syntaxe :**

    ```sql theme={null}
    hudi(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])
    ```

    ### Variante cluster

    La fonction [`hudiCluster`](/fr/reference/functions/table-functions/hudiCluster) répartit les opérations de lecture entre plusieurs nœuds d’un cluster ClickHouse. Le nœud initiateur répartit dynamiquement les fichiers de données entre les nœuds worker afin d’en paralléliser le traitement.

    ```sql theme={null}
    hudiCluster(cluster_name, url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])
    ```

    ### Moteur de table

    Au lieu d’utiliser la fonction de table dans chaque requête, vous pouvez créer une table persistante à l’aide du [moteur de table `Hudi`](/fr/reference/engines/table-engines/integrations/hudi). Les données restent dans le stockage objet et sont lues à la demande - aucune donnée n’est copiée dans ClickHouse. L’avantage est que la définition de la table est stockée dans ClickHouse et peut être partagée entre utilisateurs et sessions, sans que chaque utilisateur ait à préciser le chemin de stockage et les informations d’authentification.

    **Syntaxe :**

    ```sql theme={null}
    CREATE TABLE hudi_table
        ENGINE = Hudi(url [,aws_access_key_id, aws_secret_access_key])
    ```

    Pour les fonctionnalités prises en charge, notamment les backends de stockage, consultez la [matrice de prise en charge](/fr/guides/use-cases/data-warehousing/support-matrix#format-support). Pour une référence complète, consultez la documentation de la [fonction de table `hudi`](/fr/reference/functions/table-functions/hudi) et du [moteur de table `Hudi`](/fr/reference/engines/table-engines/integrations/hudi).
  </Tab>

  <Tab title="Apache Paimon">
    La fonction de table [`paimon`](/fr/reference/functions/table-functions/paimon) (alias de `paimonS3`) lit des tables Paimon à partir du stockage d’objets. Il existe des variantes pour chaque backend de stockage : `paimonS3`, `paimonAzure`, `paimonHDFS` et `paimonLocal`.

    **Syntaxe :**

    ```sql theme={null}
    paimon(url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])
    paimonS3(url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])

    paimonAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])

    paimonHDFS(path_to_table, [,format] [,compression_method])

    paimonLocal(path_to_table, [,format] [,compression_method])
    ```

    ### Variante pour cluster

    La fonction [`paimonS3Cluster`](/fr/reference/functions/table-functions/paimonCluster) répartit les lectures entre plusieurs nœuds d’un cluster ClickHouse. Le nœud initiateur répartit dynamiquement les fichiers de données entre des nœuds worker pour un traitement parallèle. `paimonCluster` est un alias de `paimonS3Cluster`. Il existe également des variantes pour Azure ([`paimonAzureCluster`](/fr/reference/functions/table-functions/paimonCluster)) et HDFS ([`paimonHDFSCluster`](/fr/reference/functions/table-functions/paimonCluster)).

    ```sql theme={null}
    paimonS3Cluster(cluster_name, url [,access_key_id, secret_access_key] [,format] [,structure] [,compression])
    -- paimonCluster is an alias for paimonS3Cluster

    paimonAzureCluster(cluster_name, connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])

    paimonHDFSCluster(cluster_name, path_to_table, [,format] [,compression_method])
    ```

    ### Moteur de table

    Paimon ne dispose actuellement pas d’un moteur de table dédié dans ClickHouse. Utilisez les fonctions de table ci-dessus pour interroger les tables Paimon.

    Pour connaître les fonctionnalités prises en charge, notamment les backends de stockage et autres, consultez la [matrice de prise en charge](/fr/guides/use-cases/data-warehousing/support-matrix#format-support). Pour une référence complète, consultez la documentation de la [fonction de table `paimon`](/fr/reference/functions/table-functions/paimon).
  </Tab>
</Tabs>
