跳到主要内容
跳到主要内容

表函数

表函数是构造表的方法。

页面描述
azureBlobStorage提供了一个类似表的接口,用于选择/插入 Azure Blob Storage 中的文件。类似于 s3 函数。
azureBlobStorageCluster允许在指定集群中的多个节点上并行处理来自 Azure Blob 存储的文件。
clusterAllReplicas允许访问集群中所有分片(在 remote_servers 部分配置)而无需创建分布式表。
deltaLake提供了一个只读的类似表的接口,用于访问 Amazon S3 中的 Delta Lake 表。
deltaLakeCluster这是对 deltaLake 表函数的扩展。
dictionary以 ClickHouse 表的形式显示字典数据。与 Dictionary 引擎的工作方式相同。
executableexecutable 表函数基于您在脚本中定义的用户定义函数(UDF)的输出创建一个表,该函数将行输出到 stdout
file一个表引擎,提供一个类似表的接口,可以选择和插入文件,类似于 s3 表函数。在处理本地文件时使用 file(),在处理对象存储中的桶(如 S3、GCS 或 MinIO)时使用 s3()
fileCluster允许在集群内的多个节点上同时处理与指定路径匹配的文件。发起者建立与工作节点的连接,扩展文件路径中的通配符,并将文件读取任务委派给工作节点。每个工作节点都向发起者查询下一个要处理的文件,重复直到所有任务完成(所有文件都被读取)。
format根据指定的输入格式解析来自参数的数据。如果未指定结构参数,则从数据中提取。
gcs提供了一个类似表的接口,用于 SELECTINSERT 数据从 Google Cloud Storage。需要 Storage Object User IAM 角色。
fuzzQuery对给定的查询字符串进行随机变换。
fuzzJSON对 JSON 字符串进行随机变换。
generateRandom生成带有给定模式的随机数据。允许用这些数据填充测试表。不支持所有类型。
mergeTreeProjection表示 MergeTree 表中的某些投影的内容。可用于自省。
mergeTreeIndex表示 MergeTree 表中索引和标记文件的内容。可用于自省。
hdfs从 HDFS 中的文件创建表。该表函数类似于 url 和 file 表函数。
hdfsCluster允许从指定集群中的多个节点并行处理 HDFS 中的文件。
hudi提供了一个只读的类似表的接口,用于访问 Amazon S3 中的 Apache Hudi 表。
ytsaurus该表函数允许从 YTsaurus 集群读取数据。
hudiCluster Table Function对 hudi 表函数的扩展。允许在指定集群中的多个节点上并行处理来自 Amazon S3 的 Apache Hudi 表中的文件。
iceberg提供了一个只读的类似表的接口,用于访问存储在 Amazon S3、Azure、HDFS 或本地的 Apache Iceberg 表。
icebergClustericeberg 表函数的扩展,允许在指定集群中多个节点上并行处理来自 Apache Iceberg 的文件。
input表函数,允许有效地将以给定结构发送到服务器的数据转换并插入到具有另一结构的表中。
jdbc返回通过 JDBC 驱动程序连接的表。
merge创建一个临时 Merge 表。结构将通过使用其列的并集和推导共同类型从基础表中得出。
mongodb允许对存储在远程 MongoDB 服务器上的数据执行 SELECT 查询。
mysql允许对存储在远程 MySQL 服务器上的数据执行 SELECTINSERT 查询。
null创建一个指定结构的临时表,使用 Null 表引擎。该函数用于便于测试编写和演示。
timeSeriesMetricstimeSeriesMetrics 返回表 db_name.time_series_table 的度量表,其表引擎是 TimeSeries 引擎。
timeSeriesSelector从时间序列表中读取由选择器过滤的时间序列,时间戳位于指定时间间隔内。
timeSeriesTagstimeSeriesTags 表函数返回表 db_name.time_series_table 的标签表,其表引擎是 TimeSeries 引擎。
prometheusQueryRange使用来自时间序列表的数据评估一个 prometheus 查询。
zeros用于测试目的的最快生成多行的方法。类似于 system.zerossystem.zeros_mt 系统表。
timeSeriesDatatimeSeriesData 返回表 db_name.time_series_table 使用的数据表,其表引擎是 TimeSeries。
numbers返回一个包含可指定整数的单一 number 列的表。
prometheusQuery使用来自时间序列表的数据评估一个 prometheus 查询。
generate_series (generateSeries)返回一个包含从起始到结束(含起止)的整数的单一 generate_series 列(UInt64)的表。
odbc返回通过 ODBC 连接的表。
postgresql允许对存储在远程 PostgreSQL 服务器上的数据执行 SELECTINSERT 查询。
redis该表函数允许将 ClickHouse 与 Redis 集成。
remote, remoteSecure表函数 remote 允许动态访问远程服务器,即无需创建分布式表。表函数 remoteSecureremote 相同,但通过安全连接。
s3 Table Function提供了一个类似表的接口,用于选择/插入亚马逊 S3 和谷歌云存储中的文件。该表函数类似于 hdfs 函数,但提供 S3 特定功能。
s3Cluster对 s3 表函数的扩展,允许在指定集群中的多个节点上并行处理来自 Amazon S3 和 Google Cloud Storage 的文件。
sqlite允许对存储在 SQLite 数据库中的数据执行查询。
arrowFlight允许对通过 Apache Arrow Flight 服务器公开的数据执行查询。
url根据给定的 formatstructureURL 创建表
urlCluster允许从指定集群中的多个节点并行处理 URL 中的文件。
view将子查询转换为表。该函数实现视图。
values创建一个临时存储,将值填充到列中。
loopClickHouse 中的 loop 表函数用于在无限循环中返回查询结果。

用法

表函数可以在 SELECT 查询的 FROM 子句中使用。例如,您可以使用 file 表函数从本地机器上的文件中 SELECT 数据。

echo "1, 2, 3" > example.csv
./clickhouse client
:) SELECT * FROM file('example.csv')
┌─c1─┬─c2─┬─c3─┐
│  1 │  2 │  3 │
└────┴────┴────┘

您还可以使用表函数创建只在当前查询中可用的临时表。例如:

SELECT * FROM generateSeries(1,5);
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

当查询结束时,表将被删除。

表函数可以作为创建表的一种方式,使用以下语法:

CREATE TABLE [IF NOT EXISTS] [db.]table_name AS table_function()

例如:

CREATE TABLE series AS generateSeries(1, 5);
SELECT * FROM series;
┌─generate_series─┐
│               1 │
│               2 │
│               3 │
│               4 │
│               5 │
└─────────────────┘

最后,表函数可以用于向表中 INSERT 数据。例如,我们可以再次使用 file 表函数将前一个示例中创建的表的内容写入磁盘上的文件:

INSERT INTO FUNCTION file('numbers.csv', 'CSV') SELECT * FROM series;
cat numbers.csv
1
2
3
4
5
备注

如果禁用 allow_ddl 设置,则无法使用表函数。