Предоставляет табличный интерфейс для таблиц Delta Lake в Amazon S3, Azure Blob Storage или в локально смонтированной файловой системе с поддержкой чтения и записи (с v25.10)
Синтаксис
deltaLake — это поддерживаемый для совместимости псевдоним deltaLakeS3.
deltaLake(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression] [,extra_credentials])
deltaLakeS3(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression] [,extra_credentials])
deltaLakeAzure(connection_string|storage_account_url, container_name, blobpath, [,account_name], [,account_key] [,format] [,compression_method])
deltaLakeLocal(path, [,format])Аргументы
Аргументы этой табличной функции совпадают с аргументами табличных функций s3, azureBlobStorage, HDFS и file.
Аргумент format задаёт формат файлов данных в таблице Delta Lake.
Необязательный параметр extra_credentials можно использовать, чтобы передать role_arn для ролевого доступа в ClickHouse Cloud. Шаги по настройке см. в разделе Secure S3.
Возвращаемое значение
Возвращает таблицу с указанной структурой для чтения данных из указанной таблицы Delta Lake или записи данных в неё.
Примеры
Чтение данных
Рассмотрим таблицу в хранилище S3 по адресу https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/.
Чтобы прочитать данные из этой таблицы в ClickHouse, выполните:
SELECT
URL,
UserAgent
FROM deltaLake('https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/')
WHERE URL IS NOT NULL
LIMIT 2┌─URL───────────────────────────────────────────────────────────────────┬─UserAgent─┐
│ http://auto.ria.ua/search/index.kz/jobinmoscow/detail/55089/hasimages │ 1 │
│ http://auto.ria.ua/search/index.kz/jobinmoscow.ru/gosushi │ 1 │
└───────────────────────────────────────────────────────────────────────┴───────────┘Вставка данных
Рассмотрим таблицу в хранилище S3 по адресу s3://ch-docs-s3-bucket/people_10k/.
Запись в Delta Lake — это бета-возможность, отключенная по умолчанию. Включите её следующим образом (allow_delta_lake_writes доступен начиная с версии 26.7; в более ранних версиях используйте allow_experimental_delta_lake_writes):
SET allow_delta_lake_writes=1Затем введите:
INSERT INTO TABLE FUNCTION deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>') VALUES (10001, 'John', 'Smith', 'Male', 30)Query id: 09069b47-89fa-4660-9e42-3d8b1dde9b17
Ok.
1 row in set. Elapsed: 3.426 sec.Вы можете убедиться, что вставка прошла успешно, снова прочитав данные из таблицы:
SELECT *
FROM deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>')
WHERE (firstname = 'John') AND (lastname = 'Smith')Query id: 65032944-bed6-4d45-86b3-a71205a2b659
┌────id─┬─firstname─┬─lastname─┬─gender─┬─age─┐
1. │ 10001 │ John │ Smith │ Male │ 30 │
└───────┴───────────┴──────────┴────────┴─────┘Виртуальные столбцы
_path— Путь к файлу. Тип:LowCardinality(String)._file— Имя файла. Тип:LowCardinality(String)._size— Размер файла в байтах. Тип:Nullable(UInt64). Если размер файла неизвестен, значение —NULL._time— Время последнего изменения файла. Тип:Nullable(DateTime). Если время неизвестно, значение —NULL._etag— ETag файла. Тип:LowCardinality(String). Если ETag неизвестен, значение —NULL.