Amazon S3、Azure Blob Storage、またはローカルにマウントされたファイルシステム上の Delta Lake テーブルに対するテーブル形式インターフェイスを提供し、読み取りと書き込みの両方に対応します (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 パラメータを使用すると、ClickHouse Cloud でロールベースアクセスを行うための role_arn を渡せます。設定手順については、Secure S3 を参照してください。
戻り値
指定した Delta Lake テーブルのデータを読み書きするための、指定した構造のテーブルを返します。
例
データの読み取り
https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/ にある S3 ストレージ上のテーブルについて考えてみましょう。
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です。