Перейти к основному содержимому
Перейти к основному содержимому

Табличная функция deltaLake

Предоставляет табличный интерфейс к таблицам Delta Lake в Amazon S3, Azure Blob Storage или локально смонтированной файловой системе с поддержкой операций чтения и записи (начиная с v25.10)

Синтаксис

deltaLake — это псевдоним deltaLakeS3, который поддерживается для обеспечения совместимости.

deltaLake(url [,aws_access_key_id, aws_secret_access_key] [,format] [,structure] [,compression])

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])

Аргументы

Описание аргументов совпадает с описанием аргументов табличных функций s3, azureBlobStorage, HDFS и file соответственно. Аргумент format задаёт формат файлов данных в таблице Delta Lake.

Возвращаемое значение

Таблица с указанной структурой для чтения данных из или записи данных в указанную таблицу 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/. Чтобы вставить данные в таблицу, сначала включите экспериментальную возможность:

SET allow_experimental_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.