跳转到主要内容
表函数是用于构建表的函数。
页面说明
azureBlobStorage提供类表接口,用于在 Azure Blob 存储中查询/插入文件。类似于 s3 函数。
azureBlobStorageCluster允许在指定集群中通过多个节点并行处理 Azure Blob 存储中的文件。
clusterAllReplicas允许访问集群的所有分片 (在 remote_servers 部分中配置) ,无需创建 Distributed 表。
deltaLake为 Amazon S3 中的 Delta Lake 表提供只读的类表接口。
deltaLakeCluster这是 deltaLake 表函数的扩展。
dictionary将字典数据显示为 ClickHouse 表。其工作方式与 Dictionary engine 相同。
executableexecutable 表函数根据用户自定义函数 (UDF) 的输出创建表,该函数由你在脚本中定义,并将行输出到 stdout
file一种表引擎,提供类似 S3 表函数的类表接口,用于从文件中 SELECT 和向文件中 INSERT。处理本地文件时使用 file(),处理 S3、GCS 或 MinIO 等对象存储中的 bucket 时使用 s3()
fileCluster支持在集群内多个节点上同时处理与指定路径匹配的文件。initiator 会与工作节点建立连接,展开文件路径中的通配符,并将文件读取任务分派给工作节点。每个工作节点都会向 initiator 请求下一个要处理的文件,如此反复,直到所有任务完成 (即所有文件都已读取) 。
filesystem提供对文件系统的访问,用于列出文件并返回其元数据和内容。
format根据指定的输入 format 从参数中解析数据。如果未指定 structure 参数,则会从数据中提取。
gcs提供类表接口,用于从 Google Cloud Storage 中 SELECTINSERT 数据。需要 Storage Object User IAM role。
fuzzQuery对给定的查询字符串进行随机扰动。
fuzzJSON对 JSON 字符串进行随机扰动。
generateRandom根据给定的 schema 生成随机数据。可用这些数据填充测试表。并非所有类型都受支持。
mergeTreeTextIndex表示 MergeTree 表中文本索引的字典。可用于内部信息查看。
mergeTreeProjection表示 MergeTree 表中某个 projection 的内容。可用于内部信息查看。
mergeTreeIndex表示 MergeTree 表的索引和 marks 文件的内容。可用于内部信息查看。
hdfs从 HDFS 中的文件创建表。此表函数类似于 url 和 file 表函数。
hdfsCluster允许在指定集群中通过多个节点并行处理 HDFS 中的文件。
hudi为 Amazon S3 中的 Apache Hudi 表提供只读的类表接口。
ytsaurus该表函数允许从 YTsaurus 集群读取数据。
hudiCluster Table Functionhudi 表函数的扩展。允许在指定集群中通过多个节点并行处理 Amazon S3 中 Apache Hudi 表的文件。
iceberg为存储在 Amazon S3、Azure、HDFS 或本地的 Apache Iceberg 表提供只读的类表接口。
paimon为存储在 Amazon S3、Azure、HDFS 或本地的 Apache Paimon 表提供只读的类表接口。
icebergClustericeberg 表函数的扩展,允许在指定集群中通过多个节点并行处理 Apache Iceberg 的文件。
paimonClusterpaimon 表函数的扩展,允许在指定集群中通过多个节点并行处理 Apache Paimon 的文件。
input该表函数可高效地将发送到 server 且具有给定结构的数据转换后插入到具有另一种结构的表中。
jdbc返回一个通过 JDBC 驱动连接的表。
merge创建一个临时 Merge 表。其结构将通过对底层表的列求并集并推导公共类型得出。
mongodb允许对存储在远程 MongoDB 服务器上的数据执行 SELECT 查询。
mysql允许对存储在远程 MySQL 服务器上的数据执行 SELECTINSERT 查询。
null使用 Null table engine 创建具有指定结构的临时表。该函数便于编写测试和进行演示。
timeSeriesMetricstimeSeriesMetrics 返回表 db_name.time_series_table 使用的 metrics 表,该表的表引擎为 TimeSeries。
timeSeriesSelector从 TimeSeries 表中读取由选择器过滤且时间戳位于指定时间间隔内的时间序列。
timeSeriesTagstimeSeriesTags 表函数返回表 db_name.time_series_table 使用的 tags 表,该表的表引擎为 TimeSeries。
prometheusQueryRange使用 TimeSeries 表中的数据对 Prometheus 查询进行求值。
zeros用于测试,是生成大量行的最快方法。类似于 system.zerossystem.zeros_mt 系统表。
primes返回一个仅包含单个 prime 列的表,该列包含质数。
timeSeriesDatatimeSeriesData 返回表 db_name.time_series_table 使用的数据表,该表的表引擎为 TimeSeries。
numbers返回一个仅包含单个 number 列的表,该列包含一系列整数。
prometheusQuery使用 TimeSeries 表中的数据对 Prometheus 查询进行求值。
generate_series (generateSeries)返回一个仅包含 generate_series 列 (UInt64) 的表,该列包含从 start 到 stop (含两端) 的整数。
odbc返回通过 ODBC 连接的表。
postgresql允许对存储在远程 PostgreSQL 服务器上的数据执行 SELECTINSERT 查询。
redis此表函数允许将 ClickHouse 与 Redis 集成。
remote, remoteSecure表函数 remote 允许动态访问远程服务器,即无需创建分布式表。表函数 remoteSecureremote 类似,但通过安全连接访问。
s3 Table Function提供表格式接口,用于在 Amazon S3 和 Google Cloud Storage 中查询/插入文件。该表函数类似于 hdfs 函数,但提供了 S3 特有的功能。
s3Cluster这是对 s3 表函数的扩展,允许指定 cluster 中的多个节点并行处理来自 Amazon S3 和 Google Cloud Storage 的文件。
sqlite允许对存储在 SQLite 数据库中的数据执行查询。
arrowFlight允许对通过 Apache Arrow Flight 服务器公开的数据执行查询。
url使用给定的 formatstructureURL 创建表。
urlCluster允许指定 cluster 中的多个节点并行处理来自 URL 的文件。
view将子查询转换为表。该函数实现视图。
values创建一个临时存储,并用值填充各列。
loopClickHouse 中的 loop 表函数用于以无限循环方式返回查询结果。

用法

表函数可用于 SELECT 查询的 FROM 子句中。例如,你可以使用 file 表函数从本地 计算机上的文件中 SELECT 数据。
Query
echo "1, 2, 3" > example.csv
Response
./clickhouse client
:) SELECT * FROM file('example.csv')
┌─c1─┬─c2─┬─c3─┐
│  1 │  2 │  3 │
└────┴────┴────┘
你也可以使用表函数创建仅在当前查询中可用的临时表。例如:
Query
SELECT * FROM generateSeries(1,5);
Response
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘
查询结束后,该表会被删除。 可以使用表函数创建表,语法如下:
Query
CREATE TABLE [IF NOT EXISTS] [db.]table_name AS table_function()
例如:
Query
CREATE TABLE series AS generateSeries(1, 5);
SELECT * FROM series;
Response
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘
最后,表函数也可用于将数据 INSERT 到表中。例如, 我们可以再次使用 file 表函数,将前一个示例中创建的表的内容 写入磁盘上的文件:
Query
INSERT INTO FUNCTION file('numbers.csv', 'CSV') SELECT * FROM series;
Query
cat numbers.csv
1
2
3
4
5
如果 allow_ddl 设置已禁用,则无法使用表函数。
最后修改于 2026年6月10日