> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Ce moteur fournit une intégration avec des tables Delta Lake existantes dans Amazon S3, GCS et Azure Blob Storage, et prend en charge aussi bien la lecture que l’écriture.

# Moteur de table DeltaLake

Ce moteur fournit une intégration avec des tables [Delta Lake](https://github.com/delta-io/delta) existantes dans les stockages S3, GCP et Azure, et prend en charge aussi bien la lecture que l’écriture (écriture pour S3 et GCS à partir de la version 25.10, pour Azure à partir de la version 26.9).

## Créer une table DeltaLake

Par défaut, la table Delta Lake doit déjà exister dans un stockage S3, GCP ou Azure, et les commandes ci-dessous s’y attachent sans définitions de colonnes DDL. Avec `allow_delta_lake_create_table = 1`, une commande `CREATE TABLE` avec des colonnes explicites sur un emplacement ne contenant pas de `_delta_log` crée à la place une nouvelle table Delta Lake en écrivant le commit initial via `delta-kernel-rs` (la création d’une table partitionnée n’est pas encore prise en charge) et, dans une base de données Unity `DataLakeCatalog`, la table est également enregistrée dans le catalogue.

<Tabs>
  <Tab title="S3">
    **Syntaxe**

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

    **Paramètres du moteur**

    * `url` — URL du bucket avec le chemin vers la table Delta Lake existante.
    * `aws_access_key_id`, `aws_secret_access_key` - Informations d'identification à long terme pour l'utilisateur du compte [AWS](https://aws.amazon.com/). Vous pouvez les utiliser pour authentifier vos requêtes. Ce paramètre est facultatif. Si aucune information d'identification n'est spécifiée, celles du fichier de configuration sont utilisées.
    * `extra_credentials` - Facultatif. Utilisé pour transmettre un `role_arn` pour l'accès basé sur les rôles dans ClickHouse Cloud. Consultez [Secure S3](/fr/products/cloud/guides/data-sources/accessing-s3-data-securely) pour les étapes de configuration.

    Les paramètres du moteur peuvent être spécifiés à l'aide de [collections nommées](/fr/concepts/features/configuration/server-config/named-collections).

    **Exemple**

    ```sql theme={null}
    CREATE TABLE deltalake
    ENGINE = DeltaLake('http://mars-doc-test.s3.amazonaws.com/clickhouse-bucket-3/test_table/', 'ABC123', 'Abc+123')
    ```

    Avec des collections nommées :

    ```xml theme={null}
    <clickhouse>
        <named_collections>
            <deltalake_conf>
                <url>http://mars-doc-test.s3.amazonaws.com/clickhouse-bucket-3/</url>
                <access_key_id>ABC123</access_key_id>
                <secret_access_key>Abc+123</secret_access_key>
            </deltalake_conf>
        </named_collections>
    </clickhouse>
    ```

    ```sql theme={null}
    CREATE TABLE deltalake
    ENGINE = DeltaLake(deltalake_conf, filename = 'test_table')
    ```
  </Tab>

  <Tab title="GCP">
    **Syntaxe**

    ```sql theme={null}
    -- Utilisation de l'URL HTTPS (recommandée)
    CREATE TABLE table_name
    ENGINE = DeltaLake('https://storage.googleapis.com/<bucket>/<path>/', '<access_key_id>', '<secret_access_key>')
    ```

    <Note title="URI gsutil non prise en charge">
      Les URI gsutil telles que `gs://clickhouse-docs-example-bucket` ne sont pas prises en charge ; veuillez utiliser une URL commençant par `https://storage.googleapis.com`
    </Note>

    **Arguments**

    * `url` — URL du bucket GCS pointant vers la table Delta Lake. Doit utiliser le format `https://storage.googleapis.com/<bucket>/<path>/`
      (le point de terminaison de l'API XML GCS), ou `gs://<bucket>/<path>/`, qui est converti automatiquement.
    * `access_key_id` — Clé d'accès GCS. Créez-la via Google Cloud Console → Cloud Storage → Settings → Interoperability.
    * `secret_access_key` — Secret GCS.

    **Collections nommées**

    Vous pouvez également utiliser des collections nommées.
    Par exemple :

    ```sql theme={null}
    CREATE NAMED COLLECTION gcs_creds AS
    access_key_id = '<access_key>',
    secret_access_key = '<secret>';

    CREATE TABLE gcpDeltaLake
    ENGINE = DeltaLake(gcs_creds, url = 'https://storage.googleapis.com/<bucket>/<path>')
    ```
  </Tab>

  <Tab title="Azure">
    **Syntaxe**

    ```sql theme={null}
    CREATE TABLE table_name
    ENGINE = DeltaLake(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])
    ```

    **Arguments**

    * `connection_string` — chaîne de connexion Azure
    * `storage_account_url` — URL du compte de stockage Azure (par exemple, [https://account.blob.core.windows.net](https://account.blob.core.windows.net))
    * `container_name` — nom du conteneur Azure
    * `blobpath` — chemin vers la table Delta Lake dans le conteneur
    * `account_name` — nom du compte de stockage Azure
    * `account_key` — clé du compte de stockage Azure
  </Tab>
</Tabs>

## Écrire des données à l’aide d’une table DeltaLake

Une fois la table créée avec le moteur de table DeltaLake, vous pouvez y insérer des données avec :

```sql theme={null}
SET allow_delta_lake_writes = 1;

INSERT INTO deltalake(id, firstname, lastname, gender, age)
VALUES (1, 'John', 'Smith', 'M', 32);
```

Les écritures Delta Lake sont une fonctionnalité Beta désactivée par défaut et doivent être activées avec `SET allow_delta_lake_writes = 1;` (disponible à partir de la version 26.7 ; sur les versions antérieures, utilisez `SET allow_experimental_delta_lake_writes = 1;`).

<Note>
  L’écriture avec le moteur de table est prise en charge uniquement via delta kernel.
  Les écritures fonctionnent avec S3 et GCS, et avec Azure à partir de la version 26.9.
  L’authentification Azure par workload identity (`extra_credentials(client_id = ..., tenant_id = ...)`) n’est pas prise en charge par delta kernel.
</Note>

### Cache de données

Le moteur de table et la fonction de table `DeltaLake` prennent en charge le cache de données, à l’instar des stockages `S3`, `AzureBlobStorage` et `HDFS`. Voir ["moteur de table S3"](/fr/reference/engines/table-engines/integrations/s3#data-cache) pour plus de détails.

## Voir aussi

* [fonction de table DeltaLake](/fr/reference/functions/table-functions/deltalake)
