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:
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 │
└───────────────────────────────────────────────────────────────────────┴───────────┘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):
SET allow_delta_lake_writes=1Después, escribe:
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.Puede confirmar que la inserción se realizó correctamente volviendo a consultar la tabla:
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 │
└───────┴───────────┴──────────┴────────┴─────┘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 esNULL._time— Hora de la última modificación del archivo. Tipo:Nullable(DateTime). Si se desconoce la hora, el valor esNULL._etag— El etag del archivo. Tipo:LowCardinality(String). Si se desconoce el etag, el valor esNULL.