테이블 함수(Table Functions)
테이블 함수(Table Functions)는 테이블을 생성하기 위한 메서드입니다.
| 페이지 | 설명 |
|---|---|
| azureBlobStorage | Azure Blob Storage의 파일을 선택하여 삽입할 수 있게 해 주는, 테이블과 유사한 인터페이스를 제공합니다. s3 테이블 함수와 유사합니다. |
| azureBlobStorageCluster | 지정된 클러스터의 여러 노드에서 Azure Blob Storage의 파일을 병렬로 처리할 수 있도록 합니다. |
| clusterAllReplicas | 분산 테이블을 생성하지 않고도 클러스터의 모든 세그먼트(remote_servers 섹션에 설정된)에 접근할 수 있도록 합니다. |
| deltaLake | Amazon S3에 있는 Delta Lake 테이블에 대해 읽기 전용 테이블과 유사한 인터페이스를 제공합니다. |
| deltaLakeCluster | deltaLake 테이블 함수의 확장 기능입니다. |
| dictionary | 딕셔너리 데이터를 ClickHouse 테이블 형태로 노출합니다. Dictionary 엔진과 유사한 방식으로 동작합니다. |
| executable | executable 테이블 함수는 행을 stdout으로 출력하는 스크립트에서 정의한 사용자 정의 함수(UDF)의 출력 결과를 기반으로 테이블을 생성합니다. |
| file | s3 테이블 함수와 유사하게, 파일에 대해 SELECT 및 INSERT를 수행할 수 있는 테이블과 유사한 인터페이스를 제공하는 테이블 엔진입니다. 로컬 파일을 사용할 때는 file()을, S3, GCS, MinIO와 같은 객체 스토리지의 버킷을 사용할 때는 s3()를 사용합니다. |
| fileCluster | 지정된 경로와 일치하는 파일을 클러스터 내 여러 노드에서 동시에 처리할 수 있도록 합니다. 이니시에이터 노드가 워커 노드에 대한 연결을 설정하고, 파일 경로의 glob 패턴을 확장한 다음, 파일 읽기 작업을 워커 노드에 위임합니다. 각 워커 노드는 처리할 다음 파일을 요청하기 위해 이니시에이터 노드에 요청을 보내며, 모든 작업이 완료될 때까지(모든 파일이 읽힐 때까지) 이를 반복합니다. |
| format | 지정된 입력 포맷에 따라 인수의 데이터를 파싱합니다. structure 인수가 지정되지 않은 경우 데이터에서 구조를 추론합니다. |
| gcs | Google Cloud Storage에서 데이터를 SELECT 및 INSERT할 수 있는 테이블 형태의 인터페이스를 제공합니다. Storage Object User IAM 역할이 필요합니다. |
| fuzzJSON | JSON 문자열에 무작위 변형을 가합니다. |
| fuzzQuery | 지정된 쿼리 문자열에 무작위 변형을 가합니다. |
| generateRandom | 주어진 스키마에 따라 랜덤 데이터를 생성합니다. 이 데이터를 사용하여 테스트 테이블을 채울 수 있습니다. 모든 타입이 지원되는 것은 아닙니다. |
| mergeTreeIndex | MergeTree 테이블의 인덱스와 마크 파일의 내용을 표현합니다. 내부 구조를 분석하는 용도로 사용할 수 있습니다. |
| mergeTreeProjection | MergeTree 테이블의 특정 PROJECTION의 내용을 표현합니다. 내부 구조를 분석하는 용도로 사용할 수 있습니다. |
| hdfs | HDFS의 파일로부터 테이블을 생성합니다. 이 테이블 함수는 url 및 file 테이블 함수와 유사합니다. |
| hdfsCluster | 지정된 클러스터의 여러 노드에서 HDFS의 파일을 병렬로 처리할 수 있도록 합니다. |
| hudi | Amazon S3에 있는 Apache Hudi 테이블에 대해 읽기 전용 테이블과 유사한 인터페이스를 제공합니다. |
| ytsaurus | YTsaurus 클러스터에서 데이터를 읽을 수 있도록 하는 테이블 함수입니다. |
| hudiCluster | hudi 테이블 함수의 확장입니다. 지정된 클러스터의 여러 노드에서 Amazon S3에 있는 Apache Hudi 테이블 파일을 병렬로 처리할 수 있습니다. |
| iceberg | Amazon S3, Azure, HDFS 또는 로컬에 저장된 Apache Iceberg 테이블에 대해 읽기 전용의 테이블과 유사한 인터페이스를 제공합니다. |
| paimon | Amazon S3, Azure, HDFS 또는 로컬에 저장된 Apache Paimon 테이블에 대해 읽기 전용의 테이블과 유사한 인터페이스를 제공합니다. |
| icebergCluster | iceberg 테이블 함수의 확장으로, 지정된 클러스터의 여러 노드에서 Apache Iceberg 파일을 병렬로 처리할 수 있습니다. |
| paimonCluster | paimon 테이블 함수의 확장으로, 지정된 클러스터의 여러 노드에서 Apache Paimon 파일을 병렬로 처리할 수 있습니다. |
| input | 서버로 전송된 특정 구조의 데이터를 효율적으로 변환하여, 다른 구조의 테이블에 삽입할 수 있게 하는 테이블 함수입니다. |
| jdbc | JDBC 드라이버를 통해 연결된 테이블을 반환합니다. |
| merge | 임시 Merge 테이블을 생성합니다. 구조는 하위 테이블들의 컬럼 합집합을 기반으로 하며, 공통 타입을 유도하여 결정됩니다. |
| mongodb | 원격 MongoDB 서버에 저장된 데이터에 대해 SELECT 쿼리를 실행할 수 있습니다. |
| mysql | 원격 MySQL 서버에 저장된 데이터에 대해 SELECT 및 INSERT 쿼리를 실행할 수 있도록 합니다. |
| null | 지정한 구조를 가진 Null 테이블 엔진 기반의 임시 테이블을 생성합니다. 이 함수는 테스트 및 데모 작성을 쉽게 하기 위해 사용됩니다. |
| numbers | 정수 시퀀스를 담은 단일 number 컬럼을 가진 테이블을 반환합니다. |
| primes | 단일 prime 컬럼에 소수들이 담긴 테이블을 반환합니다. |
| prometheusQuery | TimeSeries 테이블의 데이터를 사용하여 Prometheus 쿼리를 평가합니다. |
| prometheusQueryRange | TimeSeries 테이블의 데이터를 사용하여 Prometheus 쿼리를 평가합니다. |
| timeSeriesData | timeSeriesData는 테이블 엔진이 TimeSeries인 db_name.time_series_table 테이블에서 사용하는 데이터 테이블을 반환합니다. |
| timeSeriesMetrics | timeSeriesMetrics는 테이블 엔진이 TimeSeries인 db_name.time_series_table 테이블에서 사용되는 metrics 테이블을 반환합니다. |
| timeSeriesSelector | 지정된 구간의 타임스탬프와 셀렉터(selector)로 필터링하여 TimeSeries 테이블에서 시계열을 읽습니다. |
| timeSeriesTags | timeSeriesTags 테이블 함수는 TimeSeries 엔진을 사용하는 db_name.time_series_table 테이블이 사용하는 태그 테이블을 반환합니다. |
| zeros | 테스트용으로 많은 행을 가장 빠르게 생성하는 데 사용됩니다. system.zeros 및 system.zeros_mt 시스템 테이블과 유사합니다. |
| generate_series (generateSeries) | start부터 stop까지의 정수(양 끝 값 포함)를 담고 있는 단일 generate_series 컬럼(UInt64)을 가진 테이블을 반환합니다. |
| odbc | ODBC를 통해 연결된 테이블을 반환합니다. |
| postgresql | 원격 PostgreSQL 서버에 저장된 데이터에 대해 SELECT 및 INSERT 쿼리를 수행할 수 있습니다. |
| redis | 이 테이블 함수는 ClickHouse를 Redis와 통합할 수 있게 합니다. |
| remote, remoteSecure | 테이블 함수 remote를 사용하면 분산 테이블을 생성하지 않고도 실시간으로 원격 서버에 접근할 수 있습니다. 테이블 함수 remoteSecure는 보안 연결을 사용한다는 점만 제외하면 remote와 동일합니다. |
| s3 Table Function | Amazon S3 및 Google Cloud Storage에 있는 파일을 선택(SELECT)/삽입(INSERT)하기 위한 테이블과 유사한 인터페이스를 제공합니다. 이 테이블 함수는 hdfs 함수와 유사하지만, S3 전용 기능을 제공합니다. |
| s3Cluster | Amazon S3 및 Google Cloud Storage에 있는 파일을 지정된 클러스터의 여러 노드에서 병렬로 처리할 수 있게 하는 s3 테이블 함수의 확장입니다. |
| sqlite | SQLite 데이터베이스에 저장된 데이터에 대해 쿼리를 실행할 수 있습니다. |
| arrowFlight | Apache Arrow Flight 서버를 통해 노출된 데이터에 대해 쿼리를 실행할 수 있습니다. |
| url | 지정한 format 및 structure에 따라 URL의 데이터로부터 테이블을 생성합니다 |
| urlCluster | 지정된 클러스터의 여러 노드에서 URL을 통해 접근 가능한 파일을 병렬로 처리할 수 있도록 합니다. |
| values | 값 목록으로 컬럼을 채우기 위한 임시 저장소를 생성합니다. |
| view | 서브쿼리를 테이블로 변환합니다. 이 함수는 뷰를 구현합니다. |
| loop | ClickHouse의 loop 테이블 함수는 쿼리 결과를 무한 루프로 반복해서 반환하는 데 사용됩니다. |
사용법
테이블 함수는 SELECT 쿼리의 FROM
절에서 사용할 수 있습니다. 예를 들어 로컬 머신에 있는 파일에 대해 file 테이블 함수를 사용하여
데이터를 SELECT할 수 있습니다.
테이블 함수(table function)를 사용하면 현재 쿼리에서만 사용할 수 있는 임시 테이블을 생성할 수도 있습니다. 예를 들어 다음과 같습니다.
쿼리 실행이 완료되면 테이블이 삭제됩니다.
테이블 함수는 다음 구문을 사용하여 테이블을 생성하는 방법으로 사용할 수 있습니다:
예를 들어:
마지막으로, 테이블 함수는 INSERT 문을 사용해 데이터를 테이블에 삽입하는 데에도 사용할 수 있습니다. 예를 들어,
이전 예제에서 생성한 테이블의 내용을 다시 file 테이블 함수를 사용하여
디스크에 있는 파일로 기록할 수 있습니다.
참고
allow_ddl 설정이 비활성화되어 있으면 테이블 함수(table function)를 사용할 수 없습니다.