Fournit une interface de type table pour les tables Delta Lake dans Amazon S3, Azure Blob Storage ou un système de fichiers monté localement, avec prise en charge de la lecture et de l'écriture (à partir de la v25.10)
Syntaxe
deltaLake est un alias de deltaLakeS3, maintenu pour des raisons de compatibilité.
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])Arguments
Les arguments de cette fonction de table sont les mêmes que ceux des fonctions de table s3, azureBlobStorage, HDFS et file.
L’argument format correspond au format des fichiers de données de la table Delta Lake.
Un paramètre facultatif extra_credentials peut être utilisé pour transmettre un role_arn afin d’utiliser le contrôle d’accès basé sur les rôles dans ClickHouse Cloud. Consultez Secure S3 pour les étapes de configuration.
Valeur renvoyée
Renvoie une table ayant la structure spécifiée pour lire des données depuis la table Delta Lake indiquée ou y écrire des données.
Exemples
Lecture des données
Prenons une table dans un stockage S3 à l’adresse https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/.
Pour lire les données de cette table dans ClickHouse, exécutez :
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 │
└───────────────────────────────────────────────────────────────────────┴───────────┘Insertion de données
Considérez une table dans un stockage S3 à l’emplacement s3://ch-docs-s3-bucket/people_10k/.
Les écritures Delta Lake sont une fonctionnalité bêta désactivée par défaut. Activez-les comme suit (allow_delta_lake_writes est disponible à partir de la version 26.7 ; sur les versions antérieures, utilisez allow_experimental_delta_lake_writes) :
SET allow_delta_lake_writes=1Ensuite, écrivez :
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.Vous pouvez vérifier que l’insertion a bien fonctionné en interrogeant à nouveau la table :
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 │
└───────┴───────────┴──────────┴────────┴─────┘Colonnes virtuelles
_path— Chemin du fichier. Type :LowCardinality(String)._file— Nom du fichier. Type :LowCardinality(String)._size— Taille du fichier en octets. Type :Nullable(UInt64). Si la taille du fichier est inconnue, la valeur estNULL._time— Date et heure de la dernière modification du fichier. Type :Nullable(DateTime). Si cette information est inconnue, la valeur estNULL._etag— ETag du fichier. Type :LowCardinality(String). Si l’ETag est inconnu, la valeur estNULL.