Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

deltaLake

Proporciona una interfaz similar a una tabla para las tablas de Delta Lake en Amazon S3, Azure Blob Storage o un sistema de archivos montado localmente, con soporte tanto para operaciones de lectura como de escritura (desde la v25.10)

Sintaxis

deltaLake es un alias de deltaLakeS3, admitido por motivos de compatibilidad.

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

Argumentos

Los argumentos de esta función de tabla son los mismos que los de las funciones de tabla s3, azureBlobStorage, HDFS y file, respectivamente. El argumento format se refiere al formato de los archivos de datos de la tabla Delta Lake.

Se puede usar un parámetro opcional extra_credentials para pasar un role_arn para el acceso basado en roles en ClickHouse Cloud. Consulta Secure S3 para ver los pasos de configuración.

Valor devuelto

Devuelve una tabla con la estructura especificada para leer o escribir datos en la tabla de Delta Lake especificada.

Ejemplos

Lectura de datos

Considere una tabla en S3 ubicada en https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/. Para leer los datos de la tabla en ClickHouse, ejecute:

Querysql
SELECT
    URL,
    UserAgent
FROM deltaLake('https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/')
WHERE URL IS NOT NULL
LIMIT 2
Responseresponse
┌─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 │
└───────────────────────────────────────────────────────────────────────┴───────────┘

Inserción de datos

Considere una tabla en un almacenamiento S3 en s3://ch-docs-s3-bucket/people_10k/. Las escrituras de Delta Lake son una funcionalidad Beta deshabilitada de forma predeterminada. Habilítelas con lo siguiente (allow_delta_lake_writes está disponible a partir de la versión 26.7; en versiones anteriores use allow_experimental_delta_lake_writes):

Querysql
SET allow_delta_lake_writes=1

Después, escribe:

Querysql
INSERT INTO TABLE FUNCTION deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>') VALUES (10001, 'John', 'Smith', 'Male', 30)
Responseresponse
Query id: 09069b47-89fa-4660-9e42-3d8b1dde9b17

Ok.

1 row in set. Elapsed: 3.426 sec.

Puede confirmar que la inserción se realizó correctamente volviendo a consultar la tabla:

Querysql
SELECT *
FROM deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>')
WHERE (firstname = 'John') AND (lastname = 'Smith')
Responseresponse
Query id: 65032944-bed6-4d45-86b3-a71205a2b659

   ┌────id─┬─firstname─┬─lastname─┬─gender─┬─age─┐
1. │ 10001 │ John      │ Smith    │ Male   │  30 │
   └───────┴───────────┴──────────┴────────┴─────┘

Columnas virtuales

  • _path — Ruta del archivo. Tipo: LowCardinality(String).
  • _file — Nombre del archivo. Tipo: LowCardinality(String).
  • _size — Tamaño del archivo en bytes. Tipo: Nullable(UInt64). Si se desconoce el tamaño del archivo, el valor es NULL.
  • _time — Hora de la última modificación del archivo. Tipo: Nullable(DateTime). Si se desconoce la hora, el valor es NULL.
  • _etag — El etag del archivo. Tipo: LowCardinality(String). Si se desconoce el etag, el valor es NULL.
Navigation