> ## 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.

> Этот движок обеспечивает интеграцию с существующими таблицами Delta Lake в Amazon S3, GCS и Azure Blob Storage и поддерживает как чтение, так и запись.

# Движок таблицы DeltaLake

Этот движок обеспечивает интеграцию с существующими таблицами [Delta Lake](https://github.com/delta-io/delta) в хранилищах S3, GCP и Azure и поддерживает как чтение, так и запись (запись в S3 и GCS — начиная с v25.10, в Azure — с v26.9).

## Создание таблицы DeltaLake

По умолчанию таблица Delta Lake должна уже существовать в хранилище S3, GCP или Azure, а приведённые ниже команды подключаются к ней без DDL-определений столбцов. При `allow_delta_lake_create_table = 1` команда `CREATE TABLE` с явно заданными столбцами для расположения без `_delta_log` вместо этого создаёт новую таблицу Delta Lake, записывая начальный коммит через `delta-kernel-rs` (создание секционированных таблиц пока не поддерживается); кроме того, в базе данных Unity `DataLakeCatalog` таблица регистрируется в каталоге.

<Tabs>
  <Tab title="S3">
    **Синтаксис**

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

    **Параметры движка**

    * `url` — URL бакета с путём к существующей таблице Delta Lake.
    * `aws_access_key_id`, `aws_secret_access_key` - Долговременные учётные данные пользователя аккаунта [AWS](https://aws.amazon.com/). Их можно использовать для аутентификации запросов. Параметр необязателен. Если учётные данные не указаны, они берутся из файла конфигурации.
    * `extra_credentials` - Необязательный параметр. Используется для передачи `role_arn` при доступе на основе ролей в ClickHouse Cloud. Шаги по настройке см. в разделе [Secure S3](/ru/products/cloud/guides/data-sources/accessing-s3-data-securely).

    Параметры движка можно указывать с помощью [Named Collections](/ru/concepts/features/configuration/server-config/named-collections).

    **Пример**

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

    С использованием именованных коллекций:

    ```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">
    **Синтаксис**

    ```sql theme={null}
    -- Использование HTTPS URL (рекомендуется)
    CREATE TABLE table_name
    ENGINE = DeltaLake('https://storage.googleapis.com/<bucket>/<path>/', '<access_key_id>', '<secret_access_key>')
    ```

    <Note title="Неподдерживаемый URI gsutil">
      URI gsutil, например `gs://clickhouse-docs-example-bucket`, не поддерживается. Используйте URL, начинающийся с `https://storage.googleapis.com`
    </Note>

    **Аргументы**

    * `url` — URL GCS-бакета для таблицы Delta Lake. Должен использовать формат `https://storage.googleapis.com/<bucket>/<path>/`
      (конечная точка GCS XML API) или `gs://<bucket>/<path>/`, который автоматически преобразуется.
    * `access_key_id` — ключ доступа GCS. Создаётся через Google Cloud Console → Cloud Storage → Settings → Interoperability.
    * `secret_access_key` — секретный ключ GCS.

    **Именованные коллекции**

    Также можно использовать именованные коллекции.
    Например:

    ```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">
    **Синтаксис**

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

    **Аргументы**

    * `connection_string` — строка подключения Azure
    * `storage_account_url` — URL учётной записи хранилища Azure (например, [https://account.blob.core.windows.net](https://account.blob.core.windows.net))
    * `container_name` — имя контейнера Azure
    * `blobpath` — путь к таблице Delta Lake внутри контейнера
    * `account_name` — имя учётной записи хранилища Azure
    * `account_key` — ключ учётной записи хранилища Azure
  </Tab>
</Tabs>

## Запись данных с помощью таблицы DeltaLake

После создания таблицы на движке таблицы DeltaLake вы можете вставлять в неё данные с помощью:

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

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

Запись в Delta Lake — это бета-возможность, по умолчанию она отключена, и её необходимо включить с помощью `SET allow_delta_lake_writes = 1;` (доступно начиная с версии 26.7; в более ранних версиях используйте `SET allow_experimental_delta_lake_writes = 1;`).

<Note>
  Запись с использованием этого движка таблицы поддерживается только через Delta Kernel.
  Запись работает для S3 и GCS, а для Azure — начиная с версии 26.9.
  Аутентификация Azure Workload Identity (`extra_credentials(client_id = ..., tenant_id = ...)`) не поддерживается Delta Kernel.
</Note>

### Кэширование данных

Движок таблицы `DeltaLake` и табличная функция поддерживают кэширование данных, как и хранилища `S3`, `AzureBlobStorage` и `HDFS`. Подробнее см. в разделе ["движок таблицы S3"](/ru/reference/engines/table-engines/integrations/s3#data-cache).

## См. также

* [Табличная функция deltaLake](/ru/reference/functions/table-functions/deltalake)
