Этот движок обеспечивает интеграцию с существующими таблицами Delta Lake в хранилищах S3, GCP и Azure и поддерживает как чтение, так и запись (начиная с v25.10).
Создание таблицы DeltaLake
Чтобы создать таблицу DeltaLake, она должна уже существовать в хранилище S3, GCP или Azure. Приведённые ниже команды не принимают DDL-параметры для создания новой таблицы.
Синтаксис
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. Их можно использовать для аутентификации запросов. Параметр необязателен. Если учётные данные не указаны, они берутся из файла конфигурации.extra_credentials- Необязательный параметр. Используется для передачиrole_arnпри доступе на основе ролей в ClickHouse Cloud. Шаги по настройке см. в разделе Secure S3.
Параметры движка можно указывать с помощью Named Collections.
Пример
CREATE TABLE deltalake
ENGINE = DeltaLake('http://mars-doc-test.s3.amazonaws.com/clickhouse-bucket-3/test_table/', 'ABC123', 'Abc+123')С использованием именованных коллекций:
<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>CREATE TABLE deltalake
ENGINE = DeltaLake(deltalake_conf, filename = 'test_table')Синтаксис
-- Использование HTTPS URL (рекомендуется)
CREATE TABLE table_name
ENGINE = DeltaLake('https://storage.googleapis.com/<bucket>/<path>/', '<access_key_id>', '<secret_access_key>')Аргументы
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.
Именованные коллекции
Также можно использовать именованные коллекции. Например:
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>')Синтаксис
CREATE TABLE table_name
ENGINE = DeltaLake(connection_string|storage_account_url, container_name, blobpath, [account_name, account_key, format, compression])Аргументы
connection_string— строка подключения Azurestorage_account_url— URL учётной записи хранилища Azure (например, https://account.blob.core.windows.net)container_name— имя контейнера Azureblobpath— путь к таблице Delta Lake внутри контейнераaccount_name— имя учётной записи хранилища Azureaccount_key— ключ учётной записи хранилища Azure
Запись данных с помощью таблицы DeltaLake
После создания таблицы на движке таблицы DeltaLake вы можете вставлять в неё данные с помощью:
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;).
Кэширование данных
Движок таблицы DeltaLake и табличная функция поддерживают кэширование данных, как и хранилища S3, AzureBlobStorage и HDFS. Подробнее см. в разделе "движок таблицы S3".