deltaLake 테이블 함수

deltaLake 테이블 함수 (deltaLake)

Amazon S3, Azure Blob Storage 또는 로컬에 마운트된 파일 시스템의 Delta Lake 테이블에 테이블형 인터페이스를 제공하며, 읽기와 쓰기를 모두 지원해요(S3·GCS 쓰기는 v25.10부터, Azure 쓰기는 v26.9부터).

출처: 문서

본문

Amazon S3, Azure Blob Storage, 또는 로컬에 마운트된 파일 시스템의 Delta Lake 테이블에 테이블형 인터페이스를 제공하며 읽기와 쓰기 모두를 지원합니다(S3와 GCS 쓰기는 v25.10부터, Azure 쓰기는 v26.9부터).

구문

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 테이블에서 데이터를 읽거나 쓸 수 있는, 지정된 구조의 테이블을 반환합니다.

예제

데이터 읽기

S3 스토리지의 https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/ 테이블을 생각해 봅시다.

ClickHouse에서 테이블의 데이터를 읽으려면:

Query

SELECT
    URL,
    UserAgent
FROM deltaLake('https://clickhouse-public-datasets.s3.amazonaws.com/delta_lake/hits/')
WHERE URL IS NOT NULL
LIMIT 2

Response

┌─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 쓰기는 기본적으로 비활성화된 Beta 기능입니다. 다음으로 활성화합니다(allow_delta_lake_writes는 26.7 버전부터 사용 가능하며, 이전 버전에서는 allow_experimental_delta_lake_writes를 사용하세요):

Query

SET allow_delta_lake_writes=1

그런 다음 쓰기:

Query

INSERT INTO TABLE FUNCTION deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>') VALUES (10001, 'John', 'Smith', 'Male', 30)

Response

Query id: 09069b47-89fa-4660-9e42-3d8b1dde9b17

Ok.

1 row in set. Elapsed: 3.426 sec.

테이블을 다시 읽어 삽입이 동작했는지 확인할 수 있습니다:

Query

SELECT *
FROM deltaLake('s3://ch-docs-s3-bucket/people_10k/', '<access_key>', '<secret>')
WHERE (firstname = 'John') AND (lastname = 'Smith')

Response

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.

더 알아보기 (Learn more)