跳转到主要内容
下方的函数文档由 system.functions 系统表自动生成。

FQDN

引入于:v20.1.0 返回 ClickHouse 服务器 的全限定域名。 语法
别名fullHostName 参数
  • 无。
返回值 返回 ClickHouse 服务器的全限定域名。String 示例 使用示例
Query
Response

MACNumToString

引入版本:v1.1.0 将一个 UInt64 数值按大端格式解释为 MAC 地址。 返回对应的 MAC 地址字符串,格式为 AA:BB:CC:DD:EE:FF (以冒号分隔的十六进制数字) 。 语法
参数
  • num — UInt64 数字。UInt64
返回值 返回格式为 AA:BB:CC:DD:EE:FF 的 MAC 地址。String 示例 使用示例
Query
Response

MACStringToNum

引入版本:v1.1.0 MACNumToString 的反函数。如果 MAC 地址格式无效,则返回 0。 语法
参数
  • s — MAC 地址字符串。String
返回值 返回 UInt64 数值。UInt64 示例 使用示例
Query
Response

MACStringToOUI

引入版本:v1.1.0 给定格式为 AA:BB:CC:DD:EE:FF 的 MAC 地址 (以冒号分隔的十六进制数字) ,返回其前三个八位字节对应的 UInt64 数值。如果 MAC 地址格式无效,则返回 0。 语法
参数
  • s — MAC 地址字符串。String
返回值 前 3 个八位字节,类型为 UInt64。UInt64 示例 使用示例
Query
Response

authenticatedUser

引入版本:v25.11.0 如果使用 EXECUTE AS 命令切换了 session 用户,此函数会返回用于身份验证和创建 session 的原始用户名称。 别名:authUser() 语法
别名: authUser 参数
  • 无。
返回值 通过身份验证的用户名称。String 示例 用法示例
Query
Response

bar

引入版本:v1.1.0 生成条形图。 绘制一个条带,其宽度与 (x - min) 成正比;当 x = max 时,宽度等于 width 个字符。 该条带的绘制精度可达到一个字符的八分之一。 语法
参数 返回值 返回由 Unicode 字符组成的条形图字符串。String 示例 使用示例
Query
Response

blockNumber

引入版本:v1.1.0 返回包含该中的行所属的单调递增序列号。 返回的块编号会尽力保持更新,也就是说,它可能并不完全准确。 语法
参数
  • 无。
返回值 该行所在数据块的序列号。UInt64 示例 基本用法
Query
Response

blockSerializedSize

引入版本:v20.3.0 返回磁盘上一块值数据的未压缩大小 (以字节为单位) 。 语法
参数
  • x1[, x2, ...] — 任意数量的值,用于获取该值块的未压缩大小。Any
返回值 返回在未压缩情况下,一个值块写入磁盘时所占的字节数。UInt64 示例 用法示例
Query
Response

blockSize

引入版本:v1.1.0 在 ClickHouse 中,查询按 (chunks) 处理。 此函数返回调用它时所在块的大小 (行数) 。 语法
参数
  • 无。
返回值 返回当前块中的行数。UInt64 示例 用法示例
Query
Response

buildId

引入版本:v20.5.0 返回编译器为正在运行的 ClickHouse 服务器 可执行文件生成的构建 ID。 如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应每个分片。 否则,它会返回一个常量值。 语法
参数
  • 无。
返回值 返回构建 ID。String 示例 使用示例
Query
Response

byteSize

Introduced in: v21.1.0 返回其参数在内存中未压缩字节大小的估算值。 对于 String 参数,该函数返回字符串长度 + 8 (长度) 。 如果函数有多个参数,则会累加它们的字节大小。 Syntax
参数
  • arg1[, arg2, ...] — 用于估算未压缩字节大小的任意数据类型的值。Any
返回值 返回参数在内存中所占字节大小的估算值。UInt64 示例 使用示例
Query
Response
多个参数
Query
Response

catboostEvaluate

引入版本:v22.9.0 评估外部 catboost 模型。CatBoost 是由 Yandex 开发的开源梯度提升库,用于机器学习。 接受 catboost 模型路径和模型参数 (特征) 作为输入。 前置条件
  1. 构建 catboost 评估库
在评估 catboost 模型之前,必须先提供 libcatboostmodel.<so|dylib> 库。有关如何编译该库,请参阅 CatBoost documentation 接下来,在 ClickHouse 配置中指定 libcatboostmodel.<so|dylib> 的路径:
出于安全和隔离的考虑,模型评估不会在服务器进程中运行,而是由 clickhouse-library-bridge 进程执行。 首次执行 catboostEvaluate() 时,如果库桥接进程尚未运行,服务器会启动该进程。这两个进程 通过 HTTP 接口通信。默认使用端口 9012。也可以按如下方式指定其他端口——如果端口 9012 已分配给其他服务,这样会很有用。
  1. 使用 libcatboost 训练 catboost 模型
有关如何使用训练数据集训练 catboost 模型,请参见训练和应用模型 语法
参数
  • path_to_model — catboost 模型路径。const String
  • feature — 一个或多个模型特征/参数。Float*
返回值 返回模型评估结果。Float64 示例 catboostEvaluate
Query
Response

colorOKLABToSRGB

引入版本:v26.2.0 将颜色从 OKLab 感知色彩空间转换为 sRGB 色彩空间。 输入颜色以 OKLab 色彩空间表示。如果输入值超出 OKLab 的典型范围,则结果由具体实现决定。 OKLab 使用三个分量:
  • L:感知亮度 (通常在 [0..1] 范围内)
    • a:绿-红对立轴
    • b:蓝-黄对立轴
a 和 b 分量在理论上没有界限,但在实际中通常位于 -0.4 到 0.4 之间。 OKLab 的设计目标是在保持感知均匀的同时, 具备较低的计算开销。 此转换旨在作为 colorSRGBToOKLAB 的逆变换,并由 以下阶段组成:
  1. 从 OKLab 转换为线性 sRGB。 2) 从线性 sRGB 转换为经过 gamma 编码的 sRGB。
可选的 gamma 参数指定了从线性 sRGB 转换为经过 gamma 编码的 RGB 值时使用的指数。如果未指定,则会使用默认的 gamma 值, 以与 colorSRGBToOKLAB 保持一致。 有关 OKLab 色彩空间及其与 sRGB 关系的更多信息,请参见 https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color&#95;value/oklab 语法
参数
  • tuple — 由三个数值 Lab 组成的 Tuple,其中 L 的取值范围为 [0...1]Tuple(Float64, Float64, Float64)
  • gamma — 可选。用于将线性 sRGB 转换回 sRGB 的指数,即对每个通道 x 应用 (x ^ (1 / gamma)) * 255。默认值为 2.2Float64
返回值 返回表示 sRGB 颜色值的 Tuple (R, G, B)Tuple(Float64, Float64, Float64) 示例 将 OKLAB 转换为 sRGB (Float)
Query
Response
将 OKLAB 转换为 sRGB (UInt8)
Query
Response

colorOKLCHToSRGB

引入版本:v25.7.0 将颜色从 OKLCH 感知色彩空间转换为常见的 sRGB 色彩空间。 如果 L 超出范围 [0...1]C 为负数,或 H 超出范围 [0...360],则结果由具体实现决定。
OKLCH 是 OKLab 色彩空间的柱面坐标版本。 它的三个坐标分别是 L (范围为 [0...1] 的明度) 、C (色度 >= 0) 和 H (以度为单位的色相,范围为 [0...360]) 。 OKLab/OKLCH 的设计目标是在保持较低计算开销的同时实现感知均匀。
该转换是 colorSRGBToOKLCH 的逆过程:
  1. OKLCH 到 OKLab。 2) OKLab 到 Linear sRGB 3) Linear sRGB 到 sRGB
第二个参数 gamma 用于最后一步。 有关 OKLCH 空间中的颜色及其与 sRGB 颜色的对应关系,请参见 https://oklch.com/ 语法
参数
  • tuple — 由三个数值 LCH 组成的 Tuple,其中 L 的取值范围为 [0...1]C >= 0H 的取值范围为 [0...360]Tuple(Float64, Float64, Float64)
  • gamma — 可选。用于将线性 sRGB 转换回 sRGB 的指数,对每个通道 x 应用 (x ^ (1 / gamma)) * 255 进行转换。默认值为 2.2Float64
返回值 返回一个表示 sRGB 颜色值的 Tuple (R, G, B)Tuple(Float64, Float64, Float64) 示例 将 OKLCH 转换为 sRGB
Query
Response
将 OKLCH 转换为 sRGB (UInt8)
Query
Response

colorSRGBToOKLAB

引入版本:v26.2.0 将以 sRGB 色彩空间编码的颜色转换为感知均匀的 OKLAB 色彩空间。 如果任一输入通道超出 [0...255],或 gamma 值非正,则其行为由具体实现决定。
OKLAB 是一种感知均匀的色彩空间。 它的三个坐标分别是 L (范围为 [0...1] 的明度) 、a(绿色-红色轴)b(蓝色-黄色轴)。 OKLab 旨在实现感知均匀,同时保持较低的计算成本。
该转换分为两个阶段:
  1. sRGB 到 Linear sRGB 2) Linear sRGB 到 OKLab
语法
参数
  • tuple — 由三个值 R、G、B 组成的 Tuple,取值范围为 [0...255]Tuple(UInt8, UInt8, UInt8)
  • gamma — 可选。用于将 sRGB 线性化的指数,即对每个通道 x 应用 (x / 255)^gamma。默认值为 2.2Float64
返回值 返回一个表示 OKLAB 色彩空间值的 Tuple (L, a, b)Tuple(Float64, Float64, Float64) 示例 将 sRGB 转换为 OKLAB
Query
Response

colorSRGBToOKLCH

首次引入版本:v25.7.0 将以 sRGB 色彩空间编码的颜色转换为感知均匀的 OKLCH 色彩空间。 如果任一输入通道超出 [0...255],或者 gamma 值为非正数,则其行为由具体实现决定。
OKLCH 是 OKLab 色彩空间的圆柱形式。 它有三个坐标:L (范围为 [0...1] 的明度) 、C (色度 >= 0) 和 H (范围为 [0...360]、以度为单位的色相) 。 OKLab/OKLCH 旨在实现感知均匀,同时保持较低的计算开销。
该转换分为三个阶段:
  1. sRGB 到 Linear sRGB 2) Linear sRGB 到 OKLab 3) OKLab 到 OKLCH。
有关 OKLCH 空间中的颜色参考及其与 sRGB 颜色的对应关系,请参阅 https://OKLCH.com/ 语法
参数
  • tuple — 由三个值 R、G、B 组成的 Tuple,取值范围为 [0...255]Tuple(UInt8, UInt8, UInt8)
  • gamma — 可选。对每个通道 x 应用 (x / 255)^gamma 以将 sRGB 线性化时使用的指数。默认值为 2.2Float64
返回值 返回一个表示 OKLCH 色彩空间值的Tuple (L, C, H)。Tuple(Float64, Float64, Float64) 示例 将 sRGB 转换为 OKLCH
Query
Response

connectionId

引入版本:v21.3.0 返回提交当前查询的客户端连接 ID。 此函数在调试场景下最有用。 它的创建是为了兼容 MySQL 的 CONNECTION_ID 函数。 它通常不用于生产环境中的查询。 语法
参数
  • 无。
返回值 返回当前客户端的连接 ID。UInt64 示例 使用示例
Query
Response

countDigits

引入版本:v20.8.0 返回表示某个值所需的十进制位数。
此函数会考虑十进制值的标度,也就是说,它是基于底层整数类型 (value * scale) 来计算结果的。例如:
  • countDigits(42) = 2
  • countDigits(42.000) = 5
  • countDigits(0.04200) = 4
你可以使用 countDigits(x) > 18 来检查 Decimal64 是否发生十进制溢出, 不过它比 isDecimalOverflow 更慢。
语法
参数 返回值 返回表示 x 所需的位数。UInt8 示例 使用示例
Query
Response

currentDatabase

引入版本:v1.1.0 返回当前数据库的名称。 在需要指定数据库的 CREATE TABLE 查询表引擎参数中,此函数非常有用。 另请参阅 SET 语句 语法
别名: current_database, SCHEMA, DATABASE 参数
  • 无。
返回值 返回当前数据库名称。String 示例 用法示例
Query
Response
不带括号的 SQL 标准语法
Query
Response

currentProfiles

引入于:v21.9.0 返回当前用户的 profile 数组。 语法
参数
  • 无。
返回值 返回当前用户的 profile 数组。Array(String) 示例 用法示例
Query
Response

currentQueryID

引入版本:v25.2.0 返回当前 Query id。 语法
别名current_query_id 参数
  • 无。
返回值 示例 示例
Query
Response

currentRoles

引入于:v21.9.0 返回分配给当前用户的角色组成的数组。 语法
参数
  • 无。
返回值 返回当前用户被授予的角色数组。Array(String) 示例 使用示例
Query
Response

currentSchemas

引入版本:v23.7.0 与函数 currentDatabase 相同,但
  • 接受一个会被忽略的布尔参数
  • 以仅包含单个值的数组形式返回数据库名称。
函数 currentSchemas 仅为兼容 PostgreSQL 而存在。 请改用 currentDatabase 另请参见 SET 语句 语法
别名: current_schemas 参数
  • bool — 一个布尔值,会被忽略。Bool
返回值 返回一个仅包含当前数据库名称的单元素数组。Array(String) 示例 用法示例
Query
Response

currentUser

引入版本:v20.1.0 返回当前用户的用户名。 对于分布式查询,返回发起该查询的用户名。 语法
别名: session_user, user, current_user 参数
  • 无。
返回值 返回当前用户的名称;否则,返回发起查询的用户的登录名。String 示例 使用示例
Query
Response
不带括号的 SQL 标准语法
Query
Response

defaultProfiles

引入版本:v21.9.0 返回当前用户的默认 profile 名称数组。 语法
参数
  • 无。
返回值 返回由当前用户的默认 profile 名称组成的数组。Array(String) 示例 使用示例
Query
Response

defaultRoles

引入版本:v21.9.0 返回当前用户的默认角色数组。 语法
参数
  • 无。
返回值 返回由当前用户的默认角色组成的数组。Array(String) 示例 使用示例
Query
Response

defaultValueOfArgumentType

引入版本:v1.1.0 返回给定数据类型的默认值。 不包括用户为自定义列设置的默认值。 语法
参数
  • expression — 任意类型的值,或结果为任意类型值的表达式。Any
返回值 对数值返回 0,对 String 返回空字符串,对 Nullable 类型返回 NULLUInt8StringNULL 示例 使用示例
Query
Response
Nullable 示例
Query
Response

defaultValueOfTypeName

自 v1.1.0 起引入 返回给定类型名称的默认值。 语法
参数
  • type — 表示类型名称的字符串。String
返回值 返回给定类型名称的默认值:数值类型返回 0,字符串类型返回空字符串,而 Nullable UInt8StringNULL 则返回 NULL 示例 使用示例
Query
Response
Nullable 示例
Query
Response

displayName

引入版本:v22.11.0 返回 配置display_name 的值;如果未设置,则返回服务器的完全限定域名 (FQDN) 。 语法
参数
  • 无。
返回值 返回 config 中 display_name 的值;如果未设置,则返回服务器的 FQDN。String 示例 使用示例
Query
Response

dumpColumnStructure

引入版本:v1.1.0 输出列及其数据类型内部结构的详细说明。 语法
参数
  • x — 要获取其描述信息的值。Any
返回值 返回用于表示该值的列结构描述。String 示例 用法示例
Query
Response

enabledProfiles

引入于:v21.9.0 返回当前用户已启用的 profile 名称数组。 语法
参数
  • 无。
返回值 返回由当前用户已启用的 profile 名称组成的数组。Array(String) 示例 使用示例
Query
Response

enabledRoles

引入版本:v21.9.0 返回当前用户已启用角色的数组。 语法
参数
  • 无。
返回值 返回当前用户已启用的角色名称数组。Array(String) 示例 使用示例
Query
Response

errorCodeToName

在 v20.12.0 中引入 返回数值型 ClickHouse 错误代码对应的文本名称。 数值错误代码与错误名称之间的映射可在此处查看。 语法
参数 返回值 返回 error_code 的文本名称。String 示例 用法示例
Query
Response

file

自 v21.3.0 起引入 将文件作为字符串读取,并将数据加载到指定列中。 文件内容不会被解析。 另请参见 file 表函数。 语法
参数
  • path — 相对于 user_files_path 的文件路径。支持通配符 ***?{abc,def}{N..M},其中 NM 为数字,'abc''def' 为字符串。String
  • default — 如果文件不存在或无法访问,则返回该值。StringNULL
返回值 以字符串形式返回文件内容。String 示例 将文件插入表中
Query
Response

filesystemAvailable

引入版本:v20.1.0 返回承载数据库持久化存储的 文件系统 中的可用空间大小。 返回值始终小于总可用空间 (filesystemUnreserved) ,因为其中一部分空间会保留给操作系统。 语法
参数
  • disk_name — 可选。要查询其剩余可用空间的磁盘名称。若省略,则使用默认磁盘。StringFixedString
返回值 返回剩余可用空间的字节数。UInt64 示例 使用示例
Query
Response

filesystemCapacity

自 v20.1.0 起引入 返回文件系统的容量,单位为字节。 需要配置指向数据目录的 path 语法
参数
  • disk_name — 可选。要获取容量的磁盘名称。若省略,则使用默认磁盘。StringFixedString
返回值 返回文件系统的容量,单位为字节。UInt64 示例 用法示例
Query
Response

filesystemUnreserved

引入版本:v22.12.0 返回承载数据库持久化存储的 文件系统 上未保留的总可用空间 (此前为 filesystemFree) 。 另请参见 filesystemAvailable 语法
参数
  • disk_name — 可选。要查询其可用空间总量的磁盘名称。若省略,则使用默认磁盘。StringFixedString
返回值 返回可用空间总量 (以字节为单位) 。UInt64 示例 使用示例
Query
Response

finalizeAggregation

引入版本:v1.1.0 给定一个聚合状态,该函数会返回聚合结果 (如果使用了 -State 组合器,则返回最终状态) 。 语法
参数 返回值 返回聚合的最终结果。Any 示例 使用示例
Query
Response
与 initializeAggregation 配合使用
Query
Response

flipCoordinates

引入版本:v25.11.0 翻转几何对象的 x 和 y 坐标。该操作会交换纬度和经度,这对于在不同坐标系之间转换或纠正坐标顺序非常有用。 对于 Point,它会交换 x 和 y 坐标。对于复杂几何对象 (LineString、Polygon、MultiPolygon、Ring、MultiLineString) ,它会递归地将此转换应用到每一对坐标上。 该函数既支持单独的几何类型 (Point、Ring、Polygon、MultiPolygon、LineString、MultiLineString) ,也支持 Geometry Variant 类型。 语法
参数
  • geometry — 要转换的几何图形。支持的类型:Point (Tuple(Float64, Float64))、Ring (Array(Point))、Polygon (Array(Ring))、MultiPolygon (Array(Polygon))、LineString (Array(Point))、MultiLineString (Array(LineString)) 或 Geometry (可包含上述任一类型的 Variant) 。
返回值 坐标已翻转的几何图形。返回类型与输入类型一致。PointRingPolygonMultiPolygonLineStringMultiLineStringGeometry 示例 basic_point
Query
Response
ring
Query
Response
Polygon
Query
Response
geometry_wkt
Query
Response
geometry_polygon_wkt
Query
Response

formatQuery

引入版本:v23.10.0 返回给定 SQL 查询格式化后的版本,可能为多行。发生解析错误时会抛出异常。 [example:multiline] 语法
参数
  • query — 要进行格式化的 SQL 查询。String
返回值 格式化后的查询 String 示例 多行
Query
Response

formatQueryOrNull

引入于:v23.11.0 返回给定 SQL 查询的格式化版本,可能为多行。若发生解析错误,则返回 NULL。 [example:multiline] 语法
参数
  • query — 要格式化的 SQL 查询。String
返回值 格式化后的查询 String 示例 多行
Query
Response

formatQuerySingleLine

引入版本:v23.10.0 与 formatQuery() 类似,但返回的格式化字符串不包含换行符。发生解析错误时会抛出异常。 [example:multiline] 语法
参数
  • query — 待格式化的 SQL 查询。String
返回值 格式化后的查询 String 示例 多行
Query
Response

formatQuerySingleLineOrNull

引入版本:v23.11.0 类似于 formatQuery(),但返回的格式化字符串不包含换行符。发生解析错误时返回 NULL。 [example:multiline] 语法
参数
  • query — 要格式化的 SQL 查询。 String
返回值 格式化后的查询 String 示例 多行
Query
Response

formatReadableDecimalSize

引入版本:v22.11.0 给定一个大小 (字节数) ,此函数会返回一个带后缀 (KB、MB 等) 、经过舍入且便于阅读的大小字符串。 此函数的逆操作是 parseReadableSize 语法
参数 返回值 返回一个带后缀、经过四舍五入且便于阅读的大小字符串。String 示例 格式化文件大小
Query
Response
使用显式精度
Query
Response

formatReadableQuantity

引入版本:v20.10.0 给定一个数字,此函数会返回一个四舍五入后的字符串,并带有后缀 (千、百万、十亿等) 。 此函数接受任意数值类型作为输入,但在内部会将其转换为 Float64。 对于较大的值,结果可能不够理想。 语法
参数 返回值 返回一个带后缀的四舍五入数值字符串。String 示例 使用后缀格式化数值
Query
Response
显式指定精度
Query
Response

formatReadableSize

Introduced in: v1.1.0 给定一个大小 (字节数) ,此函数会返回一个易于读懂、经过四舍五入并带有后缀 (KiB、MiB 等) 的大小字符串。 此函数的反向操作是 parseReadableSizeparseReadableSizeOrZeroparseReadableSizeOrNull。 此函数接受任意数值类型作为输入,但内部会将其转换为 Float64。对于较大的值,结果可能不够理想。 语法
别名FORMAT_BYTES 参数 返回值 返回带后缀、经过四舍五入且便于阅读的大小字符串。String 示例 格式化文件大小
Query
Response
显式指定精度
Query
Response

formatReadableTimeDelta

引入版本:v20.12.0 给定一个以秒为单位的时间间隔 (delta) 或 INTERVAL 表达式,此函数会将其格式化为包含年/月/日/小时/分钟/秒/毫秒/微秒/纳秒的时间间隔字符串。 此函数接受任何数值类型作为输入,但在内部会将其转换为 Float64。对于较大的值,结果可能不够理想。 传入 INTERVAL 表达式时,其值会被转换为秒。MONTH 及更大的 Interval 单位 (MONTHQUARTERYEAR) 不受支持,因为它们并不表示以秒为单位的固定长度时间间隔。 语法
参数
  • column — 具有数值型时间增量的列,或 INTERVAL 表达式。不支持 MONTH 及更大单位的时间间隔。Float64Interval
  • maximum_unit — 可选。要显示的最大单位。可接受的值:nanosecondsmicrosecondsmillisecondssecondsminuteshoursdaysmonthsyears。默认值:yearsconst String
  • minimum_unit — 可选。要显示的最小单位。所有更小的单位都会被截断。可接受的值:nanosecondsmicrosecondsmillisecondssecondsminuteshoursdaysmonthsyears。如果显式指定的值大于 maximum_unit,则会抛出异常。默认值:当 maximum_unitseconds 或更大单位时,默认值为 seconds;否则为 nanosecondsconst String
返回值 将时间增量以字符串形式返回。String 示例 用法示例
Query
Response
使用最大计量单位
Query
Response
使用 INTERVAL 表达式
Query
Response

fuzzQuery

引入版本:v26.2.0 解析给定的查询字符串,并对其施加随机 AST 变更 (fuzzing) 。以字符串形式返回模糊处理后的查询。非确定性:每次调用都可能产生不同的结果。需要 allow_fuzz_query_functions = 1 语法
参数
  • query — 要进行模糊测试的 SQL 查询。String
返回值 模糊测试后的查询字符串 String 示例 基本示例
Query
Response

generateRandomStructure

引入版本:v23.5.0 生成格式为 column1_name column1_type, column2_name column2_type, ... 的随机表结构。 语法
参数
  • number_of_columns — 结果表结构中所需的列数。如果设为 0 或 Null,列数将随机取 1 到 128 之间的值。默认值:NullUInt64
  • seed — 用于生成稳定结果的随机种子。如果未指定 seed 或将其设为 Null,则会随机生成。UInt64
返回值 随机生成的表结构。String 示例 使用示例
Query
Response
指定列数
Query
Response
使用指定种子
Query
Response

generateSerialID

引入版本:v25.1.0 生成并返回从上一个计数器值开始的连续编号。 该函数接受一个字符串参数——序列标识符,以及一个可选的起始值。 server 应配置为使用 Keeper。 这些序列存储在 Keeper 节点下的 path 中,该 path 可在 server configuration 的 series_keeper_path 中配置。 语法
参数
  • series_identifier — 序列标识符 const String
  • start_value — 可选。计数器的起始值,默认为 0。注意:此值仅在创建新序列时使用;如果该序列已存在,则会被忽略 UInt*
返回值 返回从上一个计数器值开始的连续数字。UInt64 示例 首次调用
Query
Response
第二次调用
Query
Response
对列的调用
Query
Response
使用初始值
Query
Response
第二次调用 (带起始值)
Query
Response

getClientHTTPHeader

引入版本:v24.5.0 获取 HTTP 请求头的值。 如果不存在该请求头,或者当前请求不是通过 HTTP 接口执行的,则该函数返回空字符串。 某些 HTTP 请求头 (例如 AuthenticationX-ClickHouse-*) 会受到限制。
需要启用设置 allow_get_client_http_header该函数要求启用设置 allow_get_client_http_header。 出于安全原因,此设置默认未启用,因为某些请求头 (如 Cookie) 可能包含敏感信息。
对于此函数,HTTP 请求头区分大小写。 如果该函数在分布式查询的上下文中使用,则只有在发起节点上才会返回非空结果。 语法
参数
  • name — HTTP 请求头的名称。String
返回值 返回请求头的值。String 示例 使用示例
Query
Response

getMacro

引入版本:v20.1.0 返回服务器配置文件中某个宏的值。 宏在配置文件的 <macros> 部分中定义,即使服务器的主机名很复杂,也可以使用便于识别的名称来区分服务器。 如果该函数是在分布式表的上下文中执行的,它会生成一个普通列,其中的值与各个分片相关。 语法
参数 返回值 返回指定 macro 的值。String 示例 基本用法
Query
Response

getMaxTableNameLengthForDatabase

首次引入于:v25.1.0 返回指定数据库中表名的最大长度。 语法
参数
  • database_name — 指定数据库的名称。String
返回值 返回最长表名的长度,为整数。 示例 典型用法
Query
Response

getMergeTreeSetting

引入于:v25.6.0 返回 MergeTree 设置的当前值。 语法
参数
  • setting_name — 设置名称。String
返回值 返回 MergeTree 设置的当前值。 示例 用法示例
Query
Response

getOSKernelVersion

引入版本:v21.11.0 返回包含操作系统内核版本的字符串。 语法
参数
  • 无。
返回值 返回当前操作系统内核版本。String 示例 使用示例
Query
Response

getServerPort

引入版本:v21.10.0 返回给定协议对应的服务器端口号。 语法
参数
  • port_name — 端口名称。String
返回值 返回 server 的端口号。UInt16 示例 用法示例
Query
Response

getServerSetting

首次引入于:v25.6.0 给定服务器设置名称,返回当前设置的值。 语法
参数
  • setting_name — 服务器设置的名称。String
返回值 返回该服务器设置的当前值。Any 示例 用法示例
Query
Response

getSetting

引入版本:v20.7.0 返回某个设置的当前值。 语法
参数 返回值 返回该设置的当前值。Any 示例 使用示例
Query
Response

getSettingOrDefault

自 v24.10.0 起引入 返回某个设置的当前值;如果该设置在当前 profile 中未设置,则返回第二个参数指定的默认值。 语法
参数
  • setting_name — 设置名称。String
  • default_value — 若未设置 custom_setting,则返回该值。该值可以是任意数据类型,也可以为 NULL。
返回值 返回指定设置的当前值;如果该设置未设置,则返回 default_value 示例 使用示例
Query
Response

getSizeOfEnumType

引入版本:v1.1.0 返回给定 Enum 的字段数量。 语法
参数
  • x — 类型为 Enum 的值。Enum
返回值 返回输入值为 Enum 的字段个数。UInt8/16 示例 使用示例
Query
Response

getSubcolumn

引入版本:v23.3.0 接收表达式或标识符,以及表示子列名称的常量字符串。 返回从表达式中提取的指定子列。 语法
参数
  • 无。
返回值 示例 getSubcolumn
Query
Response

getTypeSerializationStreams

引入版本:v22.6.0 枚举数据类型的 stream 路径。 此函数仅供开发使用。 语法
参数
  • col — 用于检测数据类型的列,或数据类型的字符串表示形式。Any
返回值 返回一个包含所有序列化子流路径的数组。Array(String) 示例 tuple
Query
Response
Map
Query
Response

globalVariable

Introduced in:v20.5.0 接受一个常量字符串参数,并返回同名全局变量的值。此函数仅用于兼容 MySQL,对于 ClickHouse 的正常运行既非必需,也没有实际作用。只定义了少数几个虚拟的全局变量。 Syntax
参数
  • name — 全局变量名。String
返回值 返回变量 name 的值。Any 示例 globalVariable
Query
Response

hasColumnInTable

引入版本:v1.1.0 检查数据库表中是否存在指定列。 对于嵌套数据结构中的元素,该函数会检查相应列是否存在。 对于嵌套数据结构本身,该函数返回 0 语法
参数 返回值 如果指定列存在,则返回 1,否则返回 0UInt8 示例 检查现有列
Query
Response
检查不存在的列
Query
Response

hasThreadFuzzer

引入版本:v20.6.0 返回 Thread Fuzzer 是否处于启用状态。 此函数仅用于测试和调试。 语法
参数
  • 无。
返回值 返回 Thread Fuzzer 是否有效。UInt8 示例 检查 Thread Fuzzer 的状态
Query
Response

highlightQuery

Introduced in: v26.5.0 解析 ClickHouse SQL 查询字符串,并返回一组用于语法高亮的高亮范围。 每个范围都是一个命名元组,包含起始位置 (以字节为单位) 、结束位置以及高亮类型。 高亮类型描述片段在语法中的角色 (关键字、标识符、函数等) , 可用于在 UI 中指定颜色。在 LIKE 和 REGEXP 字符串模式中,元字符 和转义字符会分别高亮显示。 语法
参数
  • query — ClickHouse SQL 查询字符串。String。
返回值 由命名元组 (begin UInt64, end UInt64, type Enum8(...)) 组成的数组,表示高亮范围。Array(Tuple(begin UInt64, end UInt64, type Enum8(...))) 示例 简单
Query
Response

hostName

引入版本:v20.5.0 返回执行此函数的主机名。 如果该函数在远程服务器上执行 (分布式处理) ,则返回远程服务器的名称。 如果该函数在分布式表的上下文中执行,则会生成一个常规列,其值对应各个分片。 否则,它会产生一个常量值。 语法
别名hostname 参数
  • 无。
返回值 返回主机名。String 示例 用法示例
Query
Response

icebergBucket

引入版本:v25.5.0 实现了 Iceberg bucket 转换 的逻辑 语法
参数 返回值 返回源值的 32 位哈希值。Int32 示例 示例
Query
Response

icebergTruncate

在 v25.3.0 中引入 实现了 Iceberg truncate transform 的逻辑:https://iceberg.apache.org/spec/#truncate-transform-details。 语法
参数 返回值 与参数类型相同 示例 示例
Query
Response

identity

引入版本:v1.1.0 此函数会返回传入的参数,这对调试和测试很有帮助。它可以绕过索引的使用,从而查看全表扫描的性能。查询分析器在查找可用索引时,会忽略 identity 函数中的任何内容,同时也会禁用常量折叠。 语法
参数
  • x — 输入值。Any
返回值 返回原始输入值,不做任何更改。Any 示例 用法示例
Query
Response

ignore

引入于:v1.1.0 接受任意参数,并始终返回 0 语法
参数
  • x — 一个未使用的输入值,传入它仅仅是为了避免语法错误。Any
返回值 始终返回 0UInt8 示例 用法示例
Query
Response

indexHint

引入版本:v1.1.0 此函数用于调试和查看内部信息。 它会忽略其参数,并始终返回 1。 参数不会被求值。 在索引分析过程中,此函数的参数会被视为没有包裹在 indexHint 中。 这样一来,你可以根据相应条件选出索引范围内的数据,但不会再按该条件进一步过滤。 ClickHouse 中的索引是稀疏的,因此使用 indexHint 返回的数据会比直接指定相同条件更多。
当你运行:
ClickHouse 会做两件事:
  1. 使用索引查找哪些粒度 (约由 8192 行组成的块) 可能包含 key = 123
  2. 读取这些粒度,并逐行过滤,只返回 key = 123 的行
因此,即使它从磁盘读取了 8,192 行,最终也只会返回实际匹配的那 1 行。而当你使用 indexHint 运行:
ClickHouse 只会做一件事:
  1. 使用索引查找哪些粒度可能包含 key = 123,并返回这些粒度中的所有行,不做过滤。
它会返回全部 8,192 行,其中包括 key = 456key = 789 等对应的行。 (也就是恰好存储在同一粒度中的所有内容。) indexHint() 不是用来提升性能的。它是为了调试,以及帮助你理解 ClickHouse 的索引如何工作:
  • 我的条件选中了哪些粒度?
  • 这些粒度中有多少行?
  • 我的索引是否得到了有效利用?
注意:无法使用 indexHint 函数来优化查询。indexHint 函数不会优化查询,因为它不会为查询分析提供任何额外信息。把表达式放在 indexHint 函数中,并不会比不使用 indexHint 更好。indexHint 函数只能用于查看内部信息和调试,并不能提升性能。如果你看到除 ClickHouse 贡献者之外的人在使用 indexHint,那很可能是个错误,应当将其移除。 语法
参数
  • expression — 可用于索引范围选择的任意表达式。Expression
返回值 始终返回 1UInt8 示例 按日期过滤的用法示例
Query
Response

initialQueryID

Introduced in: v1.1.0 返回初始查询的 ID。 查询的其他参数可从 system.query_loginitial_query_id 字段中提取。 queryID 函数不同,initialQueryID 在不同分片上返回相同的结果。 语法
别名: initial_query_id 参数
  • 无。
返回值 返回初始查询的 ID。String 示例 使用示例
Query
Response

initialQueryStartTime

引入版本:v25.4.0 返回当前初始查询的开始时间。 initialQueryStartTime 在不同分片上返回相同的结果。 语法
别名: initial_query_start_time 参数
  • 无。
返回值 返回当前初始查询的开始时间。DateTime 示例 用法示例
Query
Response

initializeAggregation

引入版本:v20.6.0 根据单个值计算聚合函数的结果。 此函数可用于通过组合器 -State 初始化聚合函数。 你可以创建聚合函数的状态,并将其插入到类型为 AggregateFunction 的列中,或者将已初始化的聚合结果用作默认值。 语法
参数
  • aggregate_function — 要初始化的聚合函数名称。String
  • arg1[, arg2, ...] — 聚合函数的参数。Any
返回值 返回传递给该函数的每一行的聚合结果。其返回类型与 initializeAggregation 的第一个参数指定的函数返回类型相同。Any 示例 uniqState 的基本用法
Query
Response
与 sumState 和 finalizeAggregation 配合使用
Query
Response

isConstant

引入版本:v20.3.0 返回参数是否为常量表达式。 常量表达式是指其结果在查询分析阶段即可确定的表达式,也就是在执行之前就能确定结果的表达式。 例如,基于literals的表达式就是常量表达式。 此函数主要用于开发、调试和演示。 语法
参数
  • x — 要检查的表达式。Any
返回值 如果 x 是常量,则返回 1;如果 x 不是常量,则返回 0UInt8 示例 常量表达式
Query
Response
含函数的常量
Query
Response
非常量表达式
Query
Response
now() 函数的行为
Query
Response

isDecimalOverflow

引入版本:v20.8.0 检查十进制数的位数是否过多,导致其无法适配给定精度的 Decimal 数据类型。 语法
参数
  • value — 要检查的 Decimal 值。Decimal
  • precision — 可选。Decimal 类型的精度;如果省略,则使用第一个参数的原始精度。UInt8
返回值 如果 Decimal 值的位数超出其精度允许的范围,则返回 1;如果 Decimal 值符合指定精度,则返回 0UInt8 示例 使用示例
Query
Response

joinGet

引入版本:v18.16.0 允许你像从字典中取值一样从表中提取数据。 使用指定的连接键从 Join 表中获取数据。
仅支持使用 ENGINE = Join(ANY, LEFT, <join_keys>) statement 创建的表。
语法
参数
  • join_storage_table_name — 用于指示在何处执行查找的标识符。系统会在默认数据库中查找该标识符 (请参见配置文件中的参数 default_database) 。若要覆盖默认数据库设置,请使用 USE database_name 查询,或用点号同时指定数据库和表,例如 database_name.table_nameString
  • value_column — 表中包含所需数据的列名。const String
  • join_keys — 连接键列表。Any
返回值 返回与键列表对应的值列表。Any 示例 用法示例
Query
Response
与当前数据库中的表一起使用
Query
Response
将数组用作连接键
Query
Response

joinGetOrNull

引入版本:v20.4.0 允许你像从字典中取值一样从表中提取数据。 使用指定的连接键从 Join 表中获取数据。 与 joinGet 不同的是,当键不存在时,它返回 NULL
仅支持使用 ENGINE = Join(ANY, LEFT, <join_keys>) statement 创建的表。
语法
参数
  • join_storage_table_name — 用于指明在何处执行查找的标识符。系统会在默认数据库中查找该标识符 (参见配置文件中的参数 default_database) 。若要覆盖默认数据库,请使用 USE database_name 查询,或用点号同时指定数据库和表,例如 database_name.table_nameString
  • value_column — 表中包含所需数据的列名。const String
  • join_keys — 连接键列表。Any
返回值 返回与键列表对应的值列表;如果未找到某个键,则返回 NULLAny 示例 使用示例
Query
Response

lowCardinalityIndices

引入版本:v18.12.0 返回某个值在 LowCardinality 列的字典中的位置。位置从 1 开始。由于 LowCardinality 会为每个分片分别维护字典,因此同一个值在不同的分片中,此函数可能返回不同的位置。 语法
参数 返回值 该值在当前数据分片的字典中的位置。UInt64 示例 用法示例
Query
Response

lowCardinalityKeys

引入版本:v18.12.0 返回 LowCardinality 列的字典值。 如果块的大小小于或大于字典大小,结果将被截断,或用默认值补齐。 由于 LowCardinality 的字典是按分片分别维护的,因此此函数在不同的分片中可能返回不同的字典值。 语法
参数 返回值 返回字典键。UInt64 示例 lowCardinalityKeys
Query
Response

materialize

引入版本:v1.1.0 将常量转换为仅包含单一值的普通列。 普通列和常量在内存中的表示方式不同。 对于普通参数和常量参数,函数通常会执行不同的代码路径,但结果一般应当相同。 此函数可用于调试这种行为。 语法
参数
  • x — 常量。Any
返回值 返回一个包含该常量值的普通列。Any 示例 用法示例
Query
Response

minSampleSizeContinuous

引入版本:v23.10.0 计算在 A/B 测试中比较两个样本的连续指标均值时所需的最小样本量。 使用这篇文章中描述的公式。 假设实验组和对照组的样本量相同。 返回单个组所需的样本量 (即整个实验所需的样本量是返回值的两倍) 。 还假设实验组和对照组中测试指标的方差相同。 语法
别名: minSampleSizeContinous 参数
  • baseline — 指标的基线值。(U)Int*Float*
  • sigma — 指标基线值的标准差。(U)Int*Float*
  • mde — 以基线值百分比表示的最小可检测效应 (MDE) (例如,基线值为 112.25 时,MDE 为 0.03 表示预期变化为 112.25 ± 112.25*0.03) 。(U)Int*Float*
  • power — 检验所需的检验功效 (1 - II 类错误的概率) 。(U)Int*Float*
  • alpha — 检验所需的显著性水平 (I 类错误的概率) 。(U)Int*Float*
返回值 返回一个包含 3 个元素的命名 Tuple:minimum_sample_sizedetect_range_lowerdetect_range_upper。它们分别表示:所需样本量、按返回的所需样本量无法检测出的值范围下界 (计算方式为 baseline * (1 - mde)) ,以及按返回的所需样本量无法检测出的值范围上界 (计算方式为 baseline * (1 + mde)) (Float64) 。Tuple(Float64, Float64, Float64) 示例 minSampleSizeContinuous
Query
Response

minSampleSizeConversion

引入版本:v22.6.0 计算在 A/B 测试中比较两个样本的转化率 (比例) 时所需的最小样本量。 使用这篇文章中描述的公式。假设 treatment 组和 control 组的规模相同。返回单个组所需的样本量 (即整个实验所需的样本量是返回值的两倍) 。 语法
参数
  • baseline — 基准转化率。Float*
  • mde — 以百分点表示的最小可检测效应 (MDE) (例如,基准转化率为 0.25 时,MDE 为 0.03 表示预期变化为 0.25 ± 0.03) 。Float*
  • power — 测试所需的检验功效 (1 - II 类错误的概率) 。Float*
  • alpha — 测试所需的显著性水平 (I 类错误的概率) 。Float*
返回值 返回一个包含 3 个元素的命名 Tuple:minimum_sample_sizedetect_range_lowerdetect_range_upper。它们分别表示:所需样本量;在返回的所需样本量下无法检测到的值范围下界,计算方式为 baseline - mde;在返回的所需样本量下无法检测到的值范围上界,计算方式为 baseline + mdeTuple(Float64, Float64, Float64) 示例 minSampleSizeConversion
Query
Response

neighbor

引入版本:v20.1.0 返回当前行相对指定偏移量处的某列值。 此函数已弃用,且容易出错,因为它基于数据块的物理顺序进行操作,而该顺序可能与用户预期的逻辑顺序不一致。 建议改用适当的窗口函数。 可通过设置 allow_deprecated_error_prone_window_functions = 1 启用此函数。 语法
参数
  • column — 源列。Any
  • offset — 相对于当前行的偏移量。正值向前查找,负值向后查找。Integer
  • default_value — 可选。如果偏移量超出数据范围,则返回该值。若未指定,则使用该列类型的默认值。Any
返回值 返回指定偏移量处的值;如果超出范围,则返回默认值。Any 示例 用法示例
Query
Response
使用默认值
Query
Response

normalizeQuery

引入版本:v20.8.0 将字面量、由字面量组成的序列以及复杂别名 (包含空白字符、两个以上数字,或长度至少为 36 字节,例如 UUIDs) 替换为占位符 ? 语法
参数 返回值 返回用占位符替换后的给定字符序列。String 示例 使用示例
Query
Response

normalizeQueryKeepNames

引入版本:v21.2.0 将字面量及其序列替换为占位符 ?,但不会替换复杂别名 (包含空白字符、超过两位数字,或长度至少为 36 字节,例如 UUIDs) 。 这有助于更好地分析复杂的查询日志。 语法
参数 返回值 返回给定字符序列的占位符形式。String 示例 使用示例
Query
Response

normalizedQueryHash

引入版本:v20.8.0 对于相似查询,在忽略字面量值的情况下会返回相同的 64 位哈希值。 这有助于分析查询日志。 语法
参数 返回值 返回一个 64 位哈希值。UInt64 示例 使用示例
Query
Response

normalizedQueryHashKeepNames

引入版本:v21.2.0 normalizedQueryHash 类似,它会为相似查询返回相同的 64 位哈希值,且不包含字面量的值;但不同的是,它不会在哈希计算前将复杂别名 (包含空白字符、超过两个数字,或长度至少为 36 字节,例如 UUIDs) 替换为占位符。 这有助于分析查询日志。 语法
参数 返回值 返回一个 64位哈希值。UInt64 示例 用法示例
Query
Response

obfuscateQuery

引入版本:v26.4.0 通过将标识符替换为随机词、将字面量替换为随机值,同时保留查询结构,对 SQL 查询进行混淆。 此函数适合在出于调试目的将查询写入日志或共享之前,对其进行匿名化处理。 即使输入的查询相同,不同的行也会生成不同的混淆结果,这有助于 在处理多个查询时保护隐私。 可选的 tag 参数可防止在同一函数调用 在一个查询中被多次使用时发生 common subexpression elimination。这样可确保每次调用都会生成不同的混淆结果。 特性:
  • 将表名、列名和别名替换为随机词
  • 将数字和字符串字面量替换为随机值
  • 保留整体查询结构和 SQL 语法
  • 对不同的行生成不同的结果
语法
参数
  • query — 要混淆处理的 SQL 查询。String
  • tag — 可选。一个值,用于在多次使用相同函数调用时防止公共子表达式消除。
返回值 混淆后的查询,其中标识符和字面量会被替换,同时保留原始查询的结构。String 示例 基本用法
Query
Response
使用标签防止公共子表达式消除
Query
Response
不同的行会产生不同的结果
Query
Response

obfuscateQueryWithSeed

引入版本:v26.4.0 使用指定的 seed 对 SQL 查询进行混淆,以获得确定性的结果。 obfuscateQuery() 不同,此函数在给定相同 seed 时会产生确定性的结果。 当你需要在多次运行之间保持混淆结果一致,或希望 为测试或调试复现相同的混淆查询时,这个函数非常有用。 特性:
  • 基于提供的 seed 进行确定性混淆
  • 相同的 seed 始终会产生相同的混淆结果
  • 不同的 seed 会产生不同的结果
  • 与 obfuscateQuery() 一样保留查询结构
使用场景:
  • 可复现的测试用例
  • 在多次运行之间保持一致的匿名化
  • 使用一致的混淆查询进行调试
语法
参数
  • query — 要混淆的 SQL 查询。String
  • seed — 用于混淆的种子值。相同的种子会产生确定性的结果。IntegerString
返回值 根据提供的种子确定性生成的混淆后查询。String 示例 使用整数种子进行确定性混淆
Query
Response
使用字符串种子进行确定性混淆
Query
Response
相同的 seed 会产生相同的结果
Query
Response

parseReadableSize

引入版本:v24.6.0 给定一个包含字节大小且以 BKiBKBMiBMB 等为单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,此函数返回对应的字节数。 如果函数无法解析输入值,则会抛出异常。 此函数的逆向操作是 formatReadableSizeformatReadableDecimalSize 语法
参数
  • x — 使用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小。String
返回值 返回字节数,并向上取整到最接近的整数。UInt64 示例 使用示例
Query
Response

parseReadableSizeOrNull

Introduced in: v24.6.0 给定一个包含字节大小的字符串,并使用 BKiBKBMiBMB 等单位 (即 ISO/IEC 80000-13 或十进制字节单位) ,此函数会返回对应的字节数。 如果函数无法解析输入值,则返回 NULL 此函数的逆运算为 formatReadableSizeformatReadableDecimalSize Syntax
参数
  • x — 采用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小。String
返回值 返回字节数,向上取整到最接近的整数;如果无法解析输入,则返回 NULL Nullable(UInt64) 示例 用法示例
Query
Response

parseReadableSizeOrZero

Introduced in:v24.6.0 给定一个包含字节大小以及 BKiBKBMiBMB 等单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,该函数返回对应的字节数。 如果该函数无法解析输入值,则返回 0 该函数的逆操作为 formatReadableSizeformatReadableDecimalSize Syntax
参数
  • x — 采用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小值。String
返回值 返回字节数,向上取整到最近的整数;如果无法解析输入,则返回 0UInt64 示例 使用示例
Query
Response

parseTimeDelta

引入版本:v22.7.0 解析由一串数字及其后类似时间单位的内容组成的序列。 时间增量字符串使用以下时间单位表示:
  • years, year, yr, y
  • months, month, mo
  • weeks, week, w
  • days, day, d
  • hours, hour, hr, h
  • minutes, minute, min, m
  • seconds, second, sec, s
  • milliseconds, millisecond, millisec, ms
  • microseconds, microsecond, microsec, μs, µs, us
  • nanoseconds, nanosecond, nanosec, ns
多个时间单位可以用分隔符 (空格、;-+,:) 组合在一起。 年和月的长度为近似值:1 年按 365 天计算,1 个月按 30.5 天计算。 语法
参数
  • timestr — 由一串数字加上类似时间单位的内容组成的字符串。String
返回值 秒数。Float64 示例 使用示例
Query
Response
复合时间单位
Query
Response

partitionId

引入版本:v21.4.0 计算分区 ID
此函数较慢,不应在大量行上调用。
语法
别名: partitionID 参数
  • column1, column2, ... — 要返回其分区 ID 的列。
返回值 返回该行所属的分区 ID。String 示例 用法示例
Query
Response

queryID

引入版本:v21.9.0 返回当前查询的 ID。 查询的其他参数可以从 system.query_log 表中的 query_id 字段提取。 initialQueryID 函数不同,queryID 在不同分片上可能返回不同的结果。 语法
别名: query_id 参数
  • 无。
返回值 返回当前查询的 ID。String 示例 使用示例
Query
Response

revision

引入版本:v22.7.0 返回当前 ClickHouse server 的修订号。 语法
参数
  • 无。
返回值 返回当前 ClickHouse server 的修订版本。UInt32 示例 使用示例
Query
Response

rowNumberInAllBlocks

引入版本:v1.1.0 为处理的每一行返回唯一的行号。 语法
参数
  • 无。
返回值 返回该行在数据块中的序号,从 0 开始。UInt64 示例 用法示例
Query
Response

rowNumberInBlock

引入版本:v1.1.0 对于 rowNumberInBlock 处理的每个,返回当前行的编号。 返回的编号在每个块内都从 0 开始。 语法
参数
  • 无。
返回值 返回数据块中行的序号,从 0 开始。UInt64 示例 用法示例
Query
Response

runningAccumulate

引入版本:v1.1.0 对数据块中每一行的聚合函数状态进行累积。
已弃用每当进入新的数据块时,状态都会被重置。 由于这种行为容易出错,该函数已被弃用,建议改用窗口函数。 你可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
语法
参数
  • agg_state — 聚合函数状态。AggregateFunction
  • grouping — 可选。分组键。如果 grouping 的值发生变化,函数状态将被重置。它可以是任意一种定义了相等运算符的受支持数据类型。Any
返回值 返回每一行的累积结果。Any 示例 使用 initializeAggregation 的使用示例
Query
Response

runningConcurrency

引入版本:v21.3.0 计算并发事件的数量。 每个事件都有开始时间和结束时间。 开始时间计入事件,而结束时间不计入事件。 开始时间列和结束时间列必须具有相同的数据类型。 该函数会针对每个事件的开始时间,计算处于活动状态的 (并发) 事件总数。
要求事件必须按开始时间升序排列。 如果不满足此要求,函数会引发异常。 每个数据块都会单独处理。 如果不同数据块中的事件发生重叠,则无法正确处理。
已弃用建议改用窗口函数
语法
参数 返回值 返回每个事件开始时刻的并发事件数。UInt32 示例 用法示例
Query
Response

runningDifference

引入版本:v1.1.0 计算数据块中相邻两行值之间的差值。 第一行返回 0,后续各行返回与前一行的差值。
已弃用该函数仅返回当前正在处理的数据块内的差值。 由于这种行为容易出错,该函数已被弃用。 建议改用窗口函数你可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
函数的结果取决于受影响的数据块以及块内数据的顺序。 计算 runningDifference() 时的行顺序可能与最终返回给用户的行顺序不同。 为避免这种情况,你可以创建一个带有 ORDER BY 的子查询,并在子查询外部调用该函数。 请注意,块大小会影响结果。 runningDifference 的内部状态会在每个新块开始时重置。 语法
参数
  • x — 要计算逐行差分的列。Any
返回值 返回相邻值之间的差值,首行为 0。 示例 用法示例
Query
Response
块大小影响示例
Query
Response

runningDifferenceStartingWithFirstValue

引入版本:v1.1.0 计算数据块中相邻行值之间的差值,但与 runningDifference 不同,它返回的是第一行的实际值,而不是 0
已弃用仅返回当前处理的数据块内的差值。 由于这种行为容易导致错误,该函数已被弃用。 建议改用窗口函数你可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
语法
参数
  • x — 用于计算逐行差分的列。Any
返回值 返回相邻值之间的差值;对于第一行,返回该行的值。Any 示例 使用示例
Query
Response

serverUUID

引入版本:v20.1.0 返回服务器首次启动时生成的随机唯一 UUID (v4) 。 该 UUID 会被持久保存,也就是说,服务器第二次、第三次等后续启动时返回的都是同一个 UUID。 语法
参数
  • 无。
返回值 返回服务器的随机 UUID。UUID 示例 使用示例
Query
Response

shardCount

引入版本:v21.9.0 返回分布式查询的分片总数。 如果查询不是分布式查询,则返回常量值 0 语法
参数
  • 无。
返回值 返回分片总数或 0UInt32 示例 用法示例
Query
Response

shardNum

自 v21.9.0 引入 返回在分布式查询中处理部分数据的分片索引。 索引从 1 开始。 如果查询不是分布式查询,则返回常量值 0 语法
参数
  • 无。
返回值 返回分片索引或常量 0UInt32 示例 使用示例
Query
Response

showCertificate

引入版本:v22.6.0 如果已配置,将显示当前服务器的 SSL 证书信息。 有关如何将 ClickHouse 配置为使用 OpenSSL 证书验证连接的更多信息,请参见 配置 TLS 语法
参数
  • 无。
返回值 返回与已配置的 SSL 证书相关的键值对映射。Map(String, String) 示例 使用示例
Query
Response

sleep

引入版本:v1.1.0 按指定秒数暂停查询的执行。 该函数主要用于测试和调试。 通常不应在生产环境中使用 sleep() 函数,因为它可能会对查询性能和系统响应速度产生负面影响。 不过,在以下场景中它可能会很有用:
  1. 测试:在测试或对 ClickHouse 进行基准测试时,你可能希望模拟延迟或引入暂停,以观察系统在特定条件下的表现。
  2. 调试:如果你需要在某个特定时间点检查系统状态或查询执行情况,可以使用 sleep() 引入暂停,以便检查或收集相关信息。
  3. 模拟:在某些情况下,你可能希望模拟真实场景中的延迟或暂停,例如网络延迟或对外部系统的依赖。
请谨慎使用 sleep() 函数,并且仅在确有必要时使用,因为它可能会影响 ClickHouse 系统的整体性能和响应速度。
出于安全原因,该函数只能在 default 用户的 profile 中执行 (且已启用 allow_sleep) 。 语法
参数
  • seconds — 暂停查询执行的秒数,最长为 3 秒。可使用浮点数来指定小数秒。const UInt*const Float*
返回值 返回 0UInt8 示例 使用示例
Query
Response

sleepEachRow

Introduced in: v1.1.0 将查询执行按结果集中的每一行暂停指定的秒数。 sleepEachRow() 函数主要用于测试和调试,类似于 sleep() 函数。 它可以在处理每一行时模拟延迟或插入暂停,这在以下场景中很有用:
  1. 测试:在特定条件下测试或对 ClickHouse 进行基准测试时,可以使用 sleepEachRow() 为处理的每一行模拟延迟或插入暂停。
  2. 调试:如果你需要针对处理的每一行检查系统状态或查询执行情况,可以使用 sleepEachRow() 插入暂停,以便检查或收集相关信息。
  3. 模拟:在某些情况下,你可能希望模拟真实场景中每处理一行都会发生延迟或暂停的情况,例如与外部系统交互或遇到网络延迟时。
sleep() 函数一样,应谨慎使用 sleepEachRow(),并且仅在必要时使用,因为它可能会显著影响 ClickHouse 系统的整体性能和响应能力,尤其是在处理大型结果集时。
语法
参数
  • seconds — 结果集中的每一行在查询执行时暂停的秒数,最长为 3 秒。可以使用浮点值来指定秒的小数部分。const UInt*const Float*
返回值 每一行都返回 0UInt8 示例 用法示例
Query
Response

structureToCapnProtoSchema

引入版本:v23.8.0 用于将 ClickHouse 表结构转换为 CapnProto 格式 schema 的函数 语法
参数
  • 无。
返回值 示例 random
Query
Response

structureToProtobufSchema

引入版本:v23.8.0 将 ClickHouse 表结构转换为 Protobuf 格式的 schema。 此函数接收 ClickHouse 表结构定义,并将其转换为采用 proto3 语法的 Protocol Buffers (Protobuf) schema 定义。这对于生成与 ClickHouse 表结构相匹配、可用于数据交换的 Protobuf schema 非常有用。 语法
参数
  • structure — 以字符串形式表示的 ClickHouse 表结构定义 (例如:‘column1 Type1, column2 Type2’) 。String
  • message_name — 生成的 schema 中的 Protobuf 消息类型名称。String
返回值 返回采用 proto3 语法、与输入 ClickHouse 结构对应的 Protobuf schema 定义。String 示例 将 ClickHouse 结构转换为 Protobuf schema
Query
Response

tcpPort

引入版本:v20.12.0 返回服务器正在监听的原生接口 TCP 端口号。 如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应各个分片。 否则会产生一个常量值。 语法
参数
  • 无。
返回值 返回 TCP 端口号。UInt16 示例 使用示例
Query
Response

throwIf

引入版本:v1.1.0 如果参数 x 为 true,则抛出异常。 要使用 error_code 参数,必须启用配置参数 allow_custom_error_code_in_throw 语法
参数
  • x — 要检查的条件。Any
  • message — 可选。自定义错误信息。const String
  • error_code — 可选。自定义错误代码。const Int8/16/32
返回值 如果条件为 false,则返回 0;如果条件为 true,则抛出异常。UInt8 示例 用法示例
Query
Response

toColumnTypeName

引入版本:v1.1.0 返回给定值的数据类型内部名称。 与函数 toTypeName 不同,返回的数据类型可能包含内部包装列,如 ConstLowCardinality 语法
参数
  • value — 要返回其内部数据类型名称的值。Any
返回值 返回用于表示该值的内部数据类型名称。String 示例 使用示例
Query
Response

toTypeName

引入版本:v1.1.0 返回传入参数的类型名称。 如果传入 NULL,该函数会返回类型 Nullable(Nothing),对应于 ClickHouse 内部对 NULL 的表示。 语法
参数
  • x — 任意类型的值。Any
返回值 返回输入值的数据类型名称。String 示例 使用示例
Query
Response

tokenizeQuery

引入版本:v26.5.0 将 ClickHouse SQL 查询字符串标记化,并返回由标记组成的数组。 每个标记都是一个命名元组,包含起始位置 (以字节为单位) 、结束位置以及标记类型。 语法
参数
  • query — 一个 ClickHouse SQL 查询字符串。String。
返回值 一个命名元组数组 (begin UInt64, end UInt64, type Enum8(...)),表示该查询的各个标记。Array(Tuple(begin UInt64, end UInt64, type Enum8(...))) 示例 simple
Query
Response

transactionID

引入版本:v22.6.0 返回事务的 ID。
此函数属于 Experimental 功能集的一部分。 如需启用实验性事务支持,请将以下设置添加到你的配置文件中:
更多信息请参见事务 (ACID) 支持页面。
语法
参数
  • 无。
返回值 返回一个由 start_csnlocal_tidhost_id 组成的 Tuple。
  • start_csn:全局顺序号,即该事务开始时看到的最新提交时间戳。
  • local_tid:本地顺序号,对于该主机在特定 start_csn 下启动的每个事务都是唯一的。
  • host_id:启动该事务的主机 UUID。 Tuple(UInt64, UInt64, UUID)
示例 用法示例
Query
Response

transactionLatestSnapshot

引入版本:v22.6.0 返回可用于读取的某个事务的最新快照 (提交序列号) 。
此函数属于 Experimental 功能集的一部分。请在配置中添加以下设置,以启用实验性事务支持:
更多信息请参见页面 事务 (ACID) 支持
语法
参数
  • 无。
返回值 返回事务的最新快照 (CSN) 。UInt64 示例 使用示例
Query
Response

transactionOldestSnapshot

引入版本:v22.6.0 返回某个正在运行的事务可见的最早快照 (提交序列号) 。
此函数属于 Experimental 功能集的一部分。请通过将以下设置添加到配置中来启用实验性事务支持:
更多信息请参见事务 (ACID) 支持页面。
语法
参数
  • 无。
返回值 返回事务中最早的快照 (CSN) 。UInt64 示例 用法示例
Query
Response

transform

在 v1.1.0 中引入 根据显式定义的元素映射关系,将一个值转换为另一个值。 此函数有两种形式:
  • transform(x, array_from, array_to, default) - 使用映射数组转换 x,对未匹配的元素返回默认值
  • transform(x, array_from, array_to) - 执行相同的转换,但如果未找到匹配项,则返回原始 x
该函数会在 array_from 中查找 x,并返回 array_to 中相同索引位置上的对应元素。 如果在 array_from 中未找到 x,则返回 default 值 (4 参数版本) 或原始 x (3 参数版本) 。 如果 array_from 中存在多个匹配元素,则返回与第一个匹配项对应的元素。 要求:
  • array_fromarray_to 必须包含相同数量的元素
  • 对于 4 参数版本:transform(T, Array(T), Array(U), U) -> U,其中 TU 可以是不同但兼容的类型
  • 对于 3 参数版本:transform(T, Array(T), Array(T)) -> T,其中所有类型都必须相同
语法
参数 返回值 如果 xarray_from 中的某个元素匹配,则返回 array_to 中对应的值;否则返回 default (如果提供) 或 x (如果未提供 default) 。Any 示例 transform(T, Array(T), Array(U), U) -> U
Query
Response
transform(T, Array(T), Array(T)) -> T
Query
Response

uniqThetaIntersect

引入版本:v22.9.0 对两个 uniqThetaSketch 对象进行交集计算 (集合运算 ∩) ,结果是一个新的 uniqThetaSketch。 语法
参数 返回值 新的 uniqThetaSketch,其中包含交集结果。UInt64 示例 使用示例
Query
Response

uniqThetaNot

引入版本:v22.9.0 对两个 uniqThetaSketch 对象执行 a_not_b 计算 (集合运算 ×) ,返回一个新的 uniqThetaSketch。 语法
参数 返回值 返回一个新的 uniqThetaSketch,表示 a_not_b 的结果。UInt64 示例 用法示例
Query
Response

uniqThetaUnion

在 v22.9.0 中引入 对两个 uniqThetaSketch 对象进行并集计算 (集合运算 ∪) ,结果为一个新的 uniqThetaSketch。 语法
参数 返回值 返回一个新的 uniqThetaSketch,其中包含并集运算结果。UInt64 示例 用法示例
Query
Response

运行时间

引入版本:v1.1.0 返回服务器的运行时间,单位为秒。 如果在分布式表中执行,此函数会生成一个普通列,其值对应每个分片。 否则,它会生成一个常量值。 语法
参数
  • 无。
返回值 返回服务器的运行时间 (以秒为单位) 。UInt32 示例 使用示例
Query
Response

variantElement

引入版本:v25.2.0 Variant 列中提取指定类型的列。 语法
参数
  • variant — Variant 列。Variant
  • type_name — 要提取的 Variant 类型名称。String
  • default_value — 如果 variant 中不存在指定的 Variant 类型,则使用该默认值。可以是任意类型。可选。Any
返回值 返回从 Variant 列中提取出的指定 Variant 类型的列。Any 示例 使用示例
Query
Response

variantType

自 v24.2.0 起引入 返回 Variant 列中每一行的 Variant 类型名称。如果该行为 NULL,则返回 ‘None’。 语法
参数
  • variant — Variant 列。Variant
返回值 返回一个 Enum 列,表示每一行的 Variant 类型名称。Enum 示例 用法示例
Query
Response

version

引入版本:v1.1.0 以字符串形式返回 ClickHouse 的当前版本,格式为:major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release。 如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应各个分片。 否则,它会生成一个常量值。 语法
参数
  • 无。
返回值 返回当前的 ClickHouse 版本。String 示例 用法示例
Query
Response

visibleWidth

引入版本:v1.1.0 计算以文本格式 (制表符分隔) 将值输出到控制台时的大致宽度。 系统使用该函数来实现 Pretty formats。 在 Pretty formats 中,NULL 表示为与 NULL 对应的字符串。 语法
参数
  • x — 任意数据类型的值。Any
返回值 返回该值以文本格式显示时的近似宽度。UInt64 示例 计算 NULL 的可见宽度
Query
Response

zookeeperSessionUptime

引入版本:v21.11.0 返回当前 ZooKeeper 会话的运行时间 (以秒为单位) 。 语法
参数
  • 无。
返回值 返回当前 ZooKeeper 会话的运行时间 (以秒为单位) 。UInt32 示例 使用示例
Query
Response
最后修改于 2026年6月25日