Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

deltaLake

Amazon S3、Azure Blob Storage、またはローカルにマウントされたファイルシステム上の Delta Lake テーブルに対するテーブル形式インターフェイスを提供し、読み取りと書き込みの両方に対応します (v25.10 以降)

構文

互換性維持のため、deltaLakedeltaLakeS3 のエイリアスとしてサポートされています。

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

引数

このテーブル関数の引数は、それぞれ s3azureBlobStorageHDFSfile テーブル関数と同じです。 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 でそのテーブルのデータを読み取るには、次を実行します。

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 │
└───────────────────────────────────────────────────────────────────────┴───────────┘

データの挿入

S3ストレージの s3://ch-docs-s3-bucket/people_10k/ にあるテーブルについて考えます。 Delta Lake への書き込みはベータ機能であり、デフォルトでは無効になっています。以下の設定で有効にしてください (allow_delta_lake_writes はバージョン 26.7 以降で利用可能です。以前のバージョンでは allow_experimental_delta_lake_writes を使用してください) :

Querysql
SET allow_delta_lake_writes=1

次に、以下のように記述します。

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.

テーブルを再度読み取ることで、挿入が成功したことを確認できます:

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 │
   └───────┴───────────┴──────────┴────────┴─────┘

仮想カラム

  • _path — ファイルへのパス。型: LowCardinality(String)
  • _file — ファイル名。型: LowCardinality(String)
  • _size — ファイルのサイズ (バイト単位) 。型: Nullable(UInt64)。ファイルサイズが不明な場合、値は NULL です。
  • _time — ファイルの最終更新時刻。型: Nullable(DateTime)。時刻が不明な場合、値は NULL です。
  • _etag — ファイルの ETag。型: LowCardinality(String)。ETag が不明な場合、値は NULL です。
Navigation