下方的函数文档由
system.functions 系统表自动生成。FQDN
引入版本:v20.1.0 返回 ClickHouse 服务器 的全限定域名。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
fullHostName
参数
- 无。
String
示例
使用示例
Query
Response
MACNumToString
引入版本:v1.1.0 将一个UInt64 数值按大端格式解释为 MAC 地址。
返回对应的 MAC 地址字符串,格式为 AA:BB:CC:DD:EE:FF (以冒号分隔的十六进制数字) 。
语法
num— UInt64 数字。UInt64
String
示例
使用示例
Query
Response
MACStringToNum
引入版本:v1.1.0 MACNumToString 的反函数。如果 MAC 地址格式无效,则返回 0。 语法s— MAC 地址字符串。String
UInt64
示例
使用示例
Query
Response
MACStringToOUI
引入版本:v1.1.0 给定格式为 AA:BB:CC:DD:EE:FF 的 MAC 地址 (以冒号分隔的十六进制数字) ,返回其前三个八位字节对应的 UInt64 数值。如果 MAC 地址格式无效,则返回 0。 语法s— MAC 地址字符串。String
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 个字符。 该条带的绘制精度可达到一个字符的八分之一。 语法x— 要显示的数值。(U)Int*或Float*或Decimalmin— 最小值。(U)Int*或Float*或Decimalmax— 最大值。(U)Int*或Float*或Decimalwidth— 可选。条形图的字符宽度。默认值为80。const (U)Int*或const Float*或const Decimal
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。 如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应每个分片。 否则,它会返回一个常量值。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
String
示例
使用示例
Query
Response
byteSize
引入版本:v21.1.0 返回其参数在内存中未压缩字节大小的估算值。 对于String 参数,该函数返回字符串长度 + 8 (长度) 。
如果函数有多个参数,则会累加它们的字节大小。
语法
arg1[, arg2, ...]— 用于估算未压缩字节大小的任意数据类型的值。Any
UInt64
示例
使用示例
Query
Response
Query
Response
colorOKLABToSRGB
引入版本:v26.2.0 将颜色从 OKLab 感知色彩空间转换为 sRGB 色彩空间。 输入颜色以 OKLab 色彩空间表示。如果输入值超出 OKLab 的典型范围,则结果由具体实现决定。 OKLab 使用三个分量:- L:感知亮度 (通常在 [0..1] 范围内)
- a:绿-红对立轴
- b:蓝-黄对立轴
- 从 OKLab 转换为线性 sRGB。
- 从线性 sRGB 转换为经过 gamma 编码的 sRGB。
tuple— 由三个数值L、a、b组成的 Tuple,其中L的取值范围为[0...1]。Tuple(Float64, Float64, Float64)gamma— 可选。用于将线性 sRGB 转换回 sRGB 的指数,即对每个通道x应用(x ^ (1 / gamma)) * 255。默认值为2.2。Float64
(R, G, B)。Tuple(Float64, Float64, Float64)
示例
将 OKLAB 转换为 sRGB (Float)
Query
Response
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 的逆过程:
- OKLCH 到 OKLab。
- OKLab 到 Linear sRGB
- Linear sRGB 到 sRGB
tuple— 由三个数值L、C、H组成的 Tuple,其中L的取值范围为[0...1],C >= 0,H的取值范围为[0...360]。Tuple(Float64, Float64, Float64)gamma— 可选。用于将线性 sRGB 转换回 sRGB 的指数,对每个通道x应用(x ^ (1 / gamma)) * 255进行转换。默认值为2.2。Float64
(R, G, B)。Tuple(Float64, Float64, Float64)
示例
将 OKLCH 转换为 sRGB
Query
Response
Query
Response
colorSRGBToOKLAB
引入版本:v26.2.0 将以 sRGB 色彩空间编码的颜色转换为感知均匀的 OKLAB 色彩空间。 如果任一输入通道超出[0...255],或 gamma 值非正,则其行为由具体实现决定。
OKLAB 是一种感知均匀的色彩空间。
它的三个坐标分别是
L (范围为 [0...1] 的明度) 、a(绿色-红色轴) 和 b(蓝色-黄色轴)。
OKLab 旨在实现感知均匀,同时保持较低的计算成本。- sRGB 到 Linear sRGB
- Linear sRGB 到 OKLab
tuple— 由三个值 R、G、B 组成的 Tuple,取值范围为[0...255]。Tuple(UInt8, UInt8, UInt8)gamma— 可选。用于将 sRGB 线性化的指数,即对每个通道x应用(x / 255)^gamma。默认值为2.2。Float64
(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 旨在实现感知均匀,同时保持较低的计算开销。- sRGB 到 Linear sRGB
- Linear sRGB 到 OKLab
- OKLab 到 OKLCH。
tuple— 由三个值 R、G、B 组成的 Tuple,取值范围为[0...255]。Tuple(UInt8, UInt8, UInt8)gamma— 可选。对每个通道x应用(x / 255)^gamma以将 sRGB 线性化时使用的指数。默认值为2.2。Float64
Tuple(Float64, Float64, Float64)
示例
将 sRGB 转换为 OKLCH
Query
Response
connectionId
引入版本:v21.3.0 返回提交当前查询的客户端连接 ID。 此函数在调试场景下最有用。 它的创建是为了兼容 MySQL 的CONNECTION_ID 函数。
它通常不用于生产环境中的查询。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
UInt64
示例
使用示例
Query
Response
countDigits
引入版本:v20.8.0 返回表示某个值所需的十进制位数。此函数会考虑十进制值的标度,也就是说,它是基于底层整数类型
(value * scale) 来计算结果的。例如:countDigits(42) = 2countDigits(42.000) = 5countDigits(0.04200) = 4
x 所需的位数。UInt8
示例
使用示例
Query
Response
currentDatabase
引入版本:v1.1.0 返回当前数据库的名称。 在需要指定数据库的CREATE TABLE 查询表引擎参数中,此函数非常有用。
另请参阅 SET 语句。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
current_database, DATABASE, SCHEMA
参数
- 无。
String
示例
用法示例
Query
Response
Query
Response
currentHandler
引入版本:v26.6.0 返回调用该查询的 SQL 定义 HTTP 处理程序 (通过CREATE HANDLER 创建) 的名称。
如果查询不是通过此类 处理程序 调用的,则返回空字符串。
可用于根据调用的 处理程序 自定义查询行为。
此函数是非确定性的:对于相同的 arguments,可能返回不同的结果。
- 无。
String
示例
用法示例
Query
currentProfiles
引入于:v21.9.0 返回当前用户的 profile 数组。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
Array(String)
示例
用法示例
Query
Response
currentQueryID
引入版本:v25.2.0 返回当前 Query id。此函数是非确定性的:对于相同的参数,它可能会返回不同的结果。
current_query_id
参数
- 无。
Query
Response
currentRequestURL
引入版本:v26.6.0 返回调用该查询的 HTTP 请求 URL (路径和查询字符串) 。 如果该查询不是通过 HTTP 调用的,则返回空字符串。 与 SQL 定义的 HTTP 处理程序 (CREATE HANDLER) 结合使用时,可用于提取
嵌入请求路径中的参数。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
String
示例
用法示例
Query
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, current_user, user
参数
- 无。
String
示例
使用示例
Query
Response
Query
Response
defaultProfiles
引入版本:v21.9.0 返回当前用户的默认 profile 名称数组。该函数是非确定性的:对于相同的参数,可能会返回不同的结果。
- 无。
Array(String)
示例
使用示例
Query
Response
defaultRoles
引入版本:v21.9.0 返回当前用户的默认角色数组。此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
- 无。
Array(String)
示例
使用示例
Query
Response
defaultValueOfArgumentType
引入版本:v1.1.0 返回给定数据类型的默认值。 不包括用户为自定义列设置的默认值。 语法expression— 任意类型的值,或结果为任意类型值的表达式。Any
0,对 String 返回空字符串,对 Nullable 类型返回 NULL。UInt8 或 String 或 NULL
示例
使用示例
Query
Response
Query
Response
defaultValueOfTypeName
自 v1.1.0 起引入 返回给定类型名称的默认值。 语法type— 表示类型名称的字符串。String
0,字符串类型返回空字符串,而 Nullable UInt8、String 或 NULL 则返回 NULL
示例
使用示例
Query
Response
Query
Response
digits
引入于:v26.7.0 返回数字n 从指定索引 offset 开始的数字位。
计数从 1 开始,规则如下:
- 如果
offset为0,则会抛出异常,因为offset采用从 1 开始的索引。 - 如果
offset为负数,则从数字末尾开始倒数offset位,而不是从开头开始计数。 - 如果
offset大于n的位数,则返回0。
length 的规则如下:
- 如果
length为正数,表示从offset开始提取的位数 - 如果
length为负数,表示从数字右侧排除的位数
substring 函数,它对字符串执行类似的操作。
语法
n— 要提取数字的数值。(U)Int8或(U)Int16或(U)Int32或(U)Int64offset—n中数字的起始位置。(U)Int8或(U)Int16或(U)Int32或(U)Int64length— 可选。数字的最大长度。(U)Int8或(U)Int16或(U)Int32或(U)Int64
n 中选定的数字,按 UInt64 解释。如果所选范围为空,则返回 0。不保留前导零。UInt64
示例
正偏移
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
displayName
引入版本:v22.11.0 返回 配置 中display_name 的值;如果未设置,则返回服务器的完全限定域名 (FQDN) 。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
display_name 的值;如果未设置,则返回服务器的 FQDN。String
示例
使用示例
Query
Response
dumpColumnStructure
引入版本:v1.1.0 输出列及其数据类型内部结构的详细说明。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
x— 要获取其描述信息的值。Any
String
示例
用法示例
Query
Response
enabledProfiles
引入于:v21.9.0 返回当前用户已启用的 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},其中N、M为数字,'abc'、'def'为字符串。Stringdefault— 如果文件不存在或无法访问,则返回该值。String或NULL
String
示例
将文件插入表中
Query
Response
filesystemAvailable
引入版本:v20.1.0 返回承载数据库持久化存储的文件系统中的可用空间大小。 返回值始终小于总可用空间 (filesystemUnreserved) ,因为其中一部分空间会保留给操作系统。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
disk_name— 可选。要查询其剩余可用空间的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
使用示例
Query
Response
filesystemCapacity
自 v20.1.0 起引入 返回文件系统的容量,单位为字节。 需要配置指向数据目录的 path。此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
disk_name— 可选。要获取容量的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
用法示例
Query
Response
filesystemUnreserved
引入版本:v22.12.0 返回承载数据库持久化存储的 文件系统 上未保留的总可用空间 (此前为filesystemFree) 。
另请参见 filesystemAvailable。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
disk_name— 可选。要查询其可用空间总量的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
使用示例
Query
Response
finalizeAggregation
引入版本:v1.1.0 给定一个聚合状态,该函数会返回聚合结果 (如果使用了 -State 组合器,则返回最终状态) 。 语法state— 聚合状态。AggregateFunction
Any
示例
使用示例
Query
Response
Query
Response
flipCoordinates
引入版本:v25.11.0 翻转几何对象的 x 和 y 坐标。该操作会交换纬度和经度,这对于在不同坐标系之间转换或纠正坐标顺序非常有用。 对于 Point,它会交换 x 和 y 坐标。对于复杂几何对象 (MultiPoint、LineString、Polygon、MultiPolygon、Ring、MultiLineString) ,它会递归地将此转换应用到每一对坐标上。 该函数既支持单独的几何类型 (Point、MultiPoint、Ring、Polygon、MultiPolygon、LineString、MultiLineString) ,也支持 Geometry Variant 类型。 语法geometry— 要转换的几何图形。支持的类型:Point (Tuple(Float64, Float64))、MultiPoint (Array(Point))、Ring (Array(Point))、Polygon (Array(Ring))、MultiPolygon (Array(Polygon))、LineString (Array(Point))、MultiLineString (Array(LineString)) 或 Geometry (可包含上述任一类型的 Variant) 。
Point 或 MultiPoint 或 Ring 或 Polygon 或 MultiPolygon 或 LineString 或 MultiLineString 或 Geometry
示例
basic_point
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
formatQuery
引入版本:v23.10.0 返回给定 SQL 查询格式化后的版本,可能为多行。发生解析错误时会抛出异常。 [example:multiline] 语法query— 要进行格式化的 SQL 查询。String
String
示例
多行
Query
Response
formatQueryFromJSON
引入版本:v26.8.0 接受 SQL AST 的 JSON 表示形式 (由parseQueryToJSON 生成) ,并将其格式化为 SQL 查询字符串。
使用一个参数时,生成规范化格式的 SQL。
使用两个参数 (json, original_query) 时,会尽可能保留原始查询中的注释、空白和缩进。
反序列化后的 AST 受当前会话的 max_ast_depth 和 max_ast_elements 设置限制。
此函数与 parseQueryToJSON 配合使用,可通过查询的 JSON AST 表示形式
以编程方式检查和转换查询。
语法
String
示例
往返
Query
Response
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。
语法
value— 以字节为单位的大小。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalprecision— 可选。小数点后的位数。默认值为 2。const UInt8
String
示例
格式化文件大小
Query
Response
Query
Response
formatReadableQuantity
引入版本:v20.10.0 给定一个数字,此函数会返回一个四舍五入后的字符串,并带有后缀 (千、百万、十亿等) 。 此函数接受任意数值类型作为输入,但在内部会将其转换为Float64。
对于较大的值,结果可能不够理想。
语法
value— 要格式化的数值。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalprecision— 可选。小数点后的位数。默认为 2。const UInt8
String
示例
使用后缀格式化数值
Query
Response
Query
Response
formatReadableSize
Introduced in: v1.1.0 给定一个大小 (字节数) ,此函数会返回一个易于读懂、经过四舍五入并带有后缀 (KiB、MiB 等) 的大小字符串。 此函数的逆操作是parseReadableSize、parseReadableSizeOrZero 和 parseReadableSizeOrNull。
此函数接受任意数值类型作为输入,但内部会将其转换为 Float64。对于较大的值,结果可能不够理想。
语法
FORMAT_BYTES
参数
value— 以字节为单位的大小。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalprecision— 可选。小数点后的位数。默认为 2。const UInt8
String
示例
格式化文件大小
Query
Response
Query
Response
formatReadableTimeDelta
引入版本:v20.12.0 给定一个以秒为单位的时间间隔 (delta) 或INTERVAL 表达式,此函数会将其格式化为包含年/月/日/小时/分钟/秒/毫秒/微秒/纳秒的时间间隔字符串。
此函数接受任何数值类型作为输入,但在内部会将其转换为 Float64。对于较大的值,结果可能不够理想。
传入 INTERVAL 表达式时,其值会被转换为秒。MONTH 及更大的 Interval 单位 (MONTH、QUARTER、YEAR) 不受支持,因为它们并不表示以秒为单位的固定长度时间间隔。
语法
column— 具有数值型时间间隔的列,或INTERVAL表达式。不支持MONTH及更大单位的时间间隔。Float64或Intervalmaximum_unit— 可选。要显示的最大单位。可接受的值:nanoseconds、microseconds、milliseconds、seconds、minutes、hours、days、months、years。默认值:years。const Stringminimum_unit— 可选。要显示的最小单位。所有更小的单位都会被截断。可接受的值:nanoseconds、microseconds、milliseconds、seconds、minutes、hours、days、months、years。如果显式指定的值大于maximum_unit,则会抛出异常。默认值:当maximum_unit为seconds或更大单位时,默认值为seconds;否则为nanoseconds。const String
String
示例
用法示例
Query
Response
Query
Response
Query
Response
fuzzQuery
引入版本:v26.2.0 解析给定的查询字符串,并对其施加随机 AST 变更 (fuzzing) 。以字符串形式返回模糊处理后的查询。非确定性:每次调用都可能产生不同的结果。需要allow_fuzz_query_functions = 1。
语法
query— 要进行模糊测试的 SQL 查询。String
String
示例
基本示例
Query
generateRandomStructure
引入版本:v23.5.0 生成格式为column1_name column1_type, column2_name column2_type, ... 的随机表结构。
此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
number_of_columns— 结果表结构中所需的列数。如果设为 0 或Null,列数将随机取 1 到 128 之间的值。默认值:Null。UInt64seed— 用于生成稳定结果的随机种子。如果未指定seed或将其设为Null,则会随机生成。UInt64
String
示例
使用示例
Query
Response
Query
Response
Query
Response
generateSerialID
引入版本:v25.1.0 生成并返回从上一个计数器值开始的连续编号。 该函数接受一个字符串参数——序列标识符,以及一个可选的起始值。 服务器 应配置为使用 Keeper。 这些序列存储在 Keeper 节点下的 路径 中,该 路径 可在 服务器配置 的series_keeper_path 中配置。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
series_identifier— 序列标识符const Stringstart_value— 可选。计数器的起始值,默认为 0。注意:此值仅在创建新序列时使用;如果该序列已存在,则会被忽略UInt*
UInt64
示例
首次调用
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
getClientHTTPHeader
引入版本:v24.5.0 获取某个 HTTP 请求头的值。 如果不存在该请求头,或者当前请求不是通过 HTTP 接口执行的,则该函数返回空字符串。 某些 HTTP 请求头 (例如Authorization、Authentication 和 X-ClickHouse-*) 受到限制。
该函数要求启用设置
allow_get_client_http_header。
出于安全原因,该设置默认未启用,因为某些请求头 (例如 Cookie) 可能包含敏感信息。getClientHTTPHeader 会读取当前请求的请求头,因此只有当查询通过 HTTP 接口发送时,它才会返回非空值。
例如,在请求中携带该请求头,然后通过 HTTP 读取它:
application/x-www-form-urlencoded。
语法
name— HTTP 请求头的名称。String
String
示例
使用示例
Query
getMacro
引入版本:v20.1.0 返回服务器配置文件中某个宏的值。 宏在配置文件的<macros> 部分中定义,即使服务器的主机名很复杂,也可以使用便于识别的名称来区分服务器。
如果该函数是在分布式表的上下文中执行,它会生成一个普通列,其中的值与各个分片相关。
与读取该表一样,需要在 system.macros 上具有 SELECT 权限。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
name— 要获取的 macro 名称。const String
String
示例
基本用法
Query
Response
getMaxTableNameLengthForDatabase
首次引入于:v25.1.0 返回指定数据库中表名的最大长度。 语法database_name— 指定数据库的名称。String
Query
Response
getMergeTreeSetting
引入于:v25.6.0 返回 MergeTree 设置的当前值。 需要对system.merge_tree_settings 拥有 SELECT 权限,与读取该表的要求相同。
此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
setting_name— 设置名称。String
Query
Response
getOSKernelVersion
引入版本:v21.11.0 返回包含操作系统内核版本的字符串。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
String
示例
使用示例
Query
Response
getServerPort
引入版本:v21.10.0 返回给定协议对应的服务器端口号。此函数是非确定性的:对于相同参数,它可能返回不同的结果。
port_name— 端口名称。String
UInt16
示例
用法示例
Query
Response
getServerSetting
首次引入于:v25.6.0 给定服务器设置名称,返回当前设置的值。 需要对system.server_settings 拥有 SELECT 权限,与读取该表的要求相同。
此函数是非确定性的:对于相同参数,可能返回不同结果。
setting_name— 服务器设置的名称。String
Any
示例
用法示例
Query
Response
getSetting
引入版本:v20.7.0 返回某个设置的当前值。此函数是非确定性的:对于相同的参数,可能会返回不同的结果。
setting_Name— 设置名称。const String
Any
示例
使用示例
Query
Response
getSettingOrDefault
自 v24.10.0 起引入 返回某个设置的当前值;如果该设置在当前 profile 中未设置,则返回第二个参数指定的默认值。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
setting_name— 设置名称。Stringdefault_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 接收表达式或标识符,以及表示子列名称的常量字符串。 返回从表达式中提取的指定子列。 语法- 无。
Query
Response
getTypeSerializationStreams
引入版本:v22.6.0 枚举数据类型的 stream 路径。 此函数仅供开发使用。 语法col— 用于检测数据类型的列,或数据类型的字符串表示形式。Any
Array(String)
示例
tuple
Query
Response
Query
Response
globalVariable
Introduced in:v20.5.0 接受一个常量字符串参数,并返回同名全局变量的值。此函数仅用于兼容 MySQL,对于 ClickHouse 的正常运行既非必需,也没有实际作用。只定义了少数几个虚拟的全局变量。 Syntaxname— 全局变量名。String
name 的值。Any
示例
globalVariable
Query
Response
hasColumnInTable
引入版本:v1.1.0 检查数据库表中是否存在指定列。 对于嵌套数据结构中的元素,该函数会检查相应列是否存在。 对于嵌套数据结构本身,该函数返回0。
该函数要求在目标表上具有
SHOW COLUMNS 权限 (这与 DESCRIBE 和 SHOW CREATE TABLE 所需的 grant 相同) 。
如果没有该权限,调用会因 ACCESS_DENIED 失败,而不是返回 1 或 0,因此在没有访问权限的情况下无法探测列名。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
database— 数据库名称。const Stringtable— 表名称。const Stringcolumn— 列名称。const String
1,否则返回 0。UInt8
示例
检查现有列
Query
Response
Query
Response
hasThreadFuzzer
引入版本:v20.6.0 返回 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 转换 的逻辑 语法N— 桶的数量,即取模值。const (U)Int*value— 要转换的源值。(U)Int*或Bool或Decimal或Float*或String或FixedString或UUID或Date或Time或DateTime
Int32
示例
示例
Query
Response
icebergDay
引入版本:v26.9.0 实现 Iceberg 的day 分区转换:自 1970-01-01 起的天数,按 UTC 计算。
参见 https://iceberg.apache.org/spec/#partition-transforms。
语法
value— 要转换的值。Date或Date32或DateTime或DateTime64
Int32
示例
示例
Query
Response
icebergHour
引入版本:v26.9.0 实现 Iceberg 的hour 分区转换:按 UTC 计算的自 1970-01-01 00:00:00 以来的小时数。
参见 https://iceberg.apache.org/spec/#partition-transforms。
语法
value— 要转换的值。DateTime或DateTime64
Int32
示例
示例
Query
Response
icebergMonth
引入版本:v26.9.0 实现 Iceberg 的month 分区转换:按 UTC 计算的自 1970-01-01 起的月数。
参见 https://iceberg.apache.org/spec/#partition-transforms。
语法
value— 要转换的值。Date或Date32或DateTime或DateTime64
Int32
示例
示例
Query
Response
icebergTruncate
在 v25.3.0 中引入 实现了 Iceberg truncate transform 的逻辑:https://iceberg.apache.org/spec/#truncate-transform-details。 语法Query
Response
icebergYear
引入版本:v26.9.0 实现 Iceberg 的year 分区转换:自 1970 年起的年数,以 UTC 计算。
参见 https://iceberg.apache.org/spec/#partition-transforms。
语法
value— 要转换的值。Date或Date32或DateTime或DateTime64
Int32
示例
示例
Query
Response
identity
引入版本:v1.1.0 此函数会返回传入的参数,这对调试和测试很有帮助。它可以绕过索引的使用,从而查看全表扫描的性能。查询分析器在查找可用索引时,会忽略 identity 函数中的任何内容,同时也会禁用常量折叠。 语法x— 输入值。Any
Any
示例
用法示例
Query
Response
ignore
引入于:v1.1.0 接受任意参数,并始终返回0。
语法
x— 一个未使用的输入值,传入它仅仅是为了避免语法错误。Any
0。UInt8
示例
用法示例
Query
Response
indexHint
引入版本:v1.1.0 此函数用于调试和查看内部信息。 它会忽略其参数,并始终返回 1。 参数不会被求值。 在索引分析过程中,此函数的参数会被视为没有包裹在indexHint 中。
这样一来,你可以根据相应条件选出索引范围内的数据,但不会再按该条件进一步过滤。
ClickHouse 中的索引是稀疏的,因此使用 indexHint 返回的数据会比直接指定相同条件更多。
说明
说明
当你运行:ClickHouse 会做两件事:ClickHouse 只会做一件事:
- 使用索引查找哪些粒度 (约由 8192 行组成的块) 可能包含
key = 123 - 读取这些粒度,并逐行过滤,只返回
key = 123的行
indexHint 运行:- 使用索引查找哪些粒度可能包含 key = 123,并返回这些粒度中的所有行,不做过滤。
key = 456、key = 789 等对应的行。 (也就是恰好存储在同一粒度中的所有内容。)
indexHint() 不是用来提升性能的。它是为了调试,以及帮助你理解 ClickHouse 的索引如何工作:- 我的条件选中了哪些粒度?
- 这些粒度中有多少行?
- 我的索引是否得到了有效利用?
indexHint 函数来优化查询。indexHint 函数不会优化查询,因为它不会为查询分析提供任何额外信息。把表达式放在 indexHint 函数中,并不会比不使用 indexHint 更好。indexHint 函数只能用于查看内部信息和调试,并不能提升性能。如果你看到除 ClickHouse 贡献者之外的人在使用 indexHint,那很可能是个错误,应当将其移除。
语法
expression— 可用于索引范围选择的任意表达式。Expression
1。UInt8
示例
按日期过滤的用法示例
Query
Response
initialQueryID
Introduced in: v1.1.0 返回当前初始查询的 ID。 查询的其他参数可从system.query_log 的 initial_query_id 字段中提取。
与 queryID 函数不同,initialQueryID 在不同分片上返回相同的结果。
此函数是非确定性的:对于相同参数,它可能返回不同的结果。
initial_query_id
参数
- 无。
String
示例
使用示例
Query
Response
initialQueryStartTime
引入版本:v25.4.0 返回当前初始查询的开始时间。initialQueryStartTime 在不同分片上返回相同的结果。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
initial_query_start_time
参数
- 无。
DateTime
示例
用法示例
Query
Response
initializeAggregation
引入版本:v20.6.0 根据单个值计算聚合函数的结果。 此函数可用于通过组合器 -State 初始化聚合函数。 你可以创建聚合函数的状态,并将其插入到类型为AggregateFunction 的列中,或者将已初始化的聚合结果用作默认值。
语法
initializeAggregation 的第一个参数指定的函数返回类型相同。Any
示例
uniqState 的基本用法
Query
Response
Query
Response
isConstant
引入版本:v20.3.0 返回参数是否为常量表达式。 常量表达式是指其结果在查询分析阶段即可确定的表达式,也就是在执行之前就能确定结果的表达式。 例如,基于literals的表达式就是常量表达式。 此函数主要用于开发、调试和演示。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
x— 要检查的表达式。Any
x 是常量,则返回 1;如果 x 不是常量,则返回 0。UInt8
示例
常量表达式
Query
Response
Query
Response
Query
Response
Query
Response
isDecimalOverflow
引入版本:v20.8.0 检查十进制数的位数是否过多,导致其无法适配给定精度的 Decimal 数据类型。 语法1;如果 Decimal 值符合指定精度,则返回 0。UInt8
示例
使用示例
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_name。Stringvalue_column— 表中包含所需数据的列名。const Stringjoin_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_name。Stringvalue_column— 表中包含所需数据的列名。const Stringjoin_keys— 连接键列表。Any
NULL。Any
示例
使用示例
Query
Response
lowCardinalityIndices
引入版本:v18.12.0 返回某个值在 LowCardinality 列的字典中的位置。位置从 1 开始。由于 LowCardinality 会为每个分片分别维护字典,因此同一个值在不同的分片中,此函数可能返回不同的位置。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
col— 一个低基数列。LowCardinality
UInt64
示例
用法示例
Query
Response
lowCardinalityKeys
引入版本:v18.12.0 返回 LowCardinality 列的字典值。 如果块的大小小于或大于字典大小,结果将被截断,或用默认值补齐。 由于 LowCardinality 的字典是按分片分别维护的,因此此函数在不同的分片中可能返回不同的字典值。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
col— 低基数列。LowCardinality
UInt64
示例
lowCardinalityKeys
Query
Response
materialize
引入版本:v1.1.0 将常量转换为仅包含单一值的普通列。 普通列和常量在内存中的表示方式不同。 对于普通参数和常量参数,函数通常会执行不同的代码路径,但结果一般应当相同。 此函数可用于调试这种行为。 语法x— 常量。Any
Any
示例
用法示例
Query
Response
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*
minimum_sample_size、detect_range_lower 和 detect_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*
minimum_sample_size、detect_range_lower、detect_range_upper。它们分别表示:所需样本量;在返回的所需样本量下无法检测到的值范围下界,计算方式为 baseline - mde;在返回的所需样本量下无法检测到的值范围上界,计算方式为 baseline + mde。Tuple(Float64, Float64, Float64)
示例
minSampleSizeConversion
Query
Response
neighbor
引入版本:v20.1.0 返回当前行相对指定偏移量处的某列值。 此函数已弃用,且容易出错,因为它基于数据块的物理顺序进行操作,而该顺序可能与用户预期的逻辑顺序不一致。 建议改用适当的窗口函数。 可通过设置allow_deprecated_error_prone_window_functions = 1 启用此函数。
语法
column— 源列。Anyoffset— 相对于当前行的偏移量。正值向前查找,负值向后查找。Integerdefault_value— 可选。如果偏移量超出数据范围,则返回该值。若未指定,则使用该列类型的默认值。Any
Any
示例
用法示例
Query
Response
Query
Response
normalizeQuery
引入版本:v20.8.0 将字面量、由字面量组成的序列以及复杂别名 (包含空白字符、两个以上数字,或长度至少为 36 字节,例如 UUIDs) 替换为占位符?。
语法
x— 字符序列。String
String
示例
使用示例
Query
Response
normalizeQueryKeepNames
引入版本:v21.2.0 将字面量及其序列替换为占位符?,但不会替换复杂别名 (包含空白字符、超过两位数字,或长度至少为 36 字节,例如 UUIDs) 。
这有助于更好地分析复杂的查询日志。
语法
x— 字符序列。String
String
示例
使用示例
Query
Response
normalizedQueryHash
引入版本:v20.8.0 对于相似查询,在忽略字面量值的情况下会返回相同的 64 位哈希值。 这有助于分析查询日志。 语法x— 字符序列。String
UInt64
示例
使用示例
Query
Response
normalizedQueryHashKeepNames
引入版本:v21.2.0 与normalizedQueryHash 类似,它会为相似查询返回相同的 64 位哈希值,且不包含字面量的值;但不同的是,它不会在哈希计算前将复杂别名 (包含空白字符、超过两个数字,或长度至少为 36 字节,例如 UUIDs) 替换为占位符。
这有助于分析查询日志。
语法
x— 字符序列。String
UInt64
示例
用法示例
Query
Response
obfuscateQuery
引入版本:v26.4.0 通过将标识符替换为随机词、将字面量替换为随机值,同时保留查询结构,对 SQL 查询进行混淆。 此函数适合在出于调试目的将查询写入日志或共享之前,对其进行匿名化处理。 即使输入的查询相同,不同的行也会生成不同的混淆结果,这有助于 在处理多个查询时保护隐私。 可选的tag 参数可防止在同一函数调用
在一个查询中被多次使用时发生公共子表达式消除。这样可确保每次调用都会生成不同的混淆结果。
特性:
- 将表名、列名和别名替换为随机词
- 将数字和字符串字面量替换为随机值
- 保留整体查询结构和 SQL 语法
- 对不同的行生成不同的结果
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
query— 要混淆处理的 SQL 查询。Stringtag— 可选。一个值,用于在多次使用相同函数调用时防止公共子表达式消除。
String
示例
基本用法
Query
Response
Query
Response
Query
Response
obfuscateQueryWithSeed
引入版本:v26.4.0 使用指定的种子对 SQL 查询进行混淆,以获得确定性的结果。 与obfuscateQuery() 不同,此函数在给定相同种子时会产生确定性的结果。
当你需要在多次运行之间保持混淆结果一致,或希望
为测试或调试复现相同的混淆查询时,这个函数非常有用。
特性:
- 基于提供的种子进行确定性混淆
- 相同的种子始终会产生相同的混淆结果
- 不同的种子会产生不同的结果
- 与 obfuscateQuery() 一样保留查询结构
- 可复现的测试用例
- 在多次运行之间保持一致的匿名化
- 使用一致的混淆查询进行调试
String
示例
使用整数种子进行确定性混淆
Query
Response
Query
Response
Query
Response
parseISO8601Duration
Introduced in: v26.9.0 解析 ISO 8601 时长字符串,并返回对应的秒数。 时长以P 开头,后接可选的日期部分,以及由 T 引出的可选时间部分:
W- 周D- 天T- 时间部分的起始标识H- 小时M- 分钟,仅可出现在T之后S- 秒
PT0.5H 是合法的,返回 1800。
各标识符必须按上述顺序出现,且每个最多出现一次。与 ISO 8601:2004 中周标识符为 exclusive (不可与其他标识符共用) 不同,这里它可以
与其他标识符组合使用。
年 (Y) 标识符以及位于 T 之前的月 (M) 标识符会被拒绝,因为年和月所对应的秒数并不固定。此类时长请改为基于某个参考日期
进行换算。
标准及其扩展允许、但此处不接受的写法有两种:
- 使用逗号作为小数分隔符,例如
PT1,5S—— 请改用句点 - 带前导符号,例如
-PT1S,该写法来自 RFC 3339 和 XML Schema,而非核心语法
duration— ISO 8601 时长字符串。String
Float64
示例
用法示例
Query
Response
Query
Response
parseQueryToJSON
引入版本:v26.8.0 将 SQL 查询字符串解析为其 AST (抽象语法树) ,并返回该树的 JSON 表示。 生成的 JSON 可传递给formatQueryFromJSON 以重建 SQL 查询,也可通过 dialect 设置中的 clickhouse_json 值直接发送
到服务器 (由 enable_json_ast_dialect 控制) 。
这对于需要以编程方式检查或转换查询而无需使用
SQL 语法的工具非常有用。
并非所有 SQL 查询都能以 JSON 形式完整表示。对于包含 JSON 形式无法
复现的数据的查询 (例如内联 INSERT ... VALUES / INSERT ... FORMAT 数据) ,以及尚未实现 JSON 序列化的 AST 节点类型,会返回 BAD_ARGUMENTS,
而不会生成 formatQueryFromJSON 无法重新读取的 JSON。
解析限制 (max_query_size、max_parser_depth、max_parser_backtracks) 取自当前
会话设置。
语法
sql— 要解析的 SQL 查询字符串。String
String
示例
简单 SELECT 查询
Query
Response
parseReadableSize
引入版本:v24.6.0 给定一个包含字节大小且以B、KiB、KB、MiB、MB 等为单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,此函数返回对应的字节数。
如果函数无法解析输入值,则会抛出异常。
此函数的逆向操作是 formatReadableSize 和 formatReadableDecimalSize。
语法
x— 使用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小。String
UInt64
示例
使用示例
Query
Response
parseReadableSizeOrNull
Introduced in: v24.6.0 给定一个包含字节大小的字符串,并使用B、KiB、KB、MiB、MB 等单位 (即 ISO/IEC 80000-13 或十进制字节单位) ,此函数会返回对应的字节数。
如果函数无法解析输入值,则返回 NULL。
此函数的逆运算为 formatReadableSize 和 formatReadableDecimalSize。
Syntax
x— 采用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小。String
NULL Nullable(UInt64)
示例
用法示例
Query
Response
parseReadableSizeOrZero
Introduced in:v24.6.0 给定一个包含字节大小以及B、KiB、KB、MiB、MB 等单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,该函数返回对应的字节数。
如果该函数无法解析输入值,则返回 0。
该函数的逆操作为 formatReadableSize 和 formatReadableDecimalSize。
Syntax
x— 采用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小值。String
0。UInt64
示例
使用示例
Query
Response
parseTimeDelta
引入版本:v22.7.0 解析由一串数字及其后类似时间单位的内容组成的序列。 时间增量字符串使用以下时间单位表示:years,year,yr,ymonths,month,moweeks,week,wdays,day,dhours,hour,hr,hminutes,minute,min,mseconds,second,sec,smilliseconds,millisecond,millisec,msmicroseconds,microsecond,microsec,μs,µs,usnanoseconds,nanosecond,nanosec,ns
;、-、+、,、:) 组合在一起。
年和月的长度为近似值:1 年按 365 天计算,1 个月按 30.5 天计算。
语法
timestr— 由一串数字加上类似时间单位的内容组成的字符串。String
Float64
示例
使用示例
Query
Response
Query
Response
partitionId
引入版本:v21.4.0 计算分区 ID。此函数较慢,不应在大量行上调用。
partitionID
参数
column1, column2, ...— 要返回其分区 ID 的列。
String
示例
用法示例
Query
Response
pgGetUserById
引入版本:v26.8.0 PostgreSQL wire protocol 的兼容函数,类似于pg_catalog.pg_get_userbyid。
PostgreSQL 客户端 (例如 psql 中的 \d 命令) 使用该函数显示表的所有者。
ClickHouse 不跟踪表的所有权,因此该函数会忽略参数并返回当前用户的名称。
此函数是非确定性的:对于相同的参数,可能返回不同的结果。
pg_get_userbyid
参数
oid— 角色的对象标识符。该值将被忽略。UInt32
String
示例
使用示例
Query
Response
pgTableIsVisible
引入版本:v26.8.0 用于 PostgreSQL wire protocol 的兼容函数,对应于pg_catalog.pg_table_is_visible。
PostgreSQL 客户端 (例如 psql 中的 \d 命令) 使用该函数过滤搜索路径中可见的表。
ClickHouse 模拟的 pg_class 视图仅暴露当前数据库中的表,且这些表均可见,因此该函数始终返回 1。
语法
pg_table_is_visible
参数
oid— 表的对象标识符,通过模拟的pg_class视图提供。该值会被忽略。UInt32
1。UInt8
示例
使用示例
Query
Response
queryID
引入版本:v21.9.0 返回当前查询的 ID。 查询的其他参数可以从system.query_log 表中的 query_id 字段提取。
与 initialQueryID 函数不同,queryID 在不同分片上可能返回不同的结果。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
query_id
参数
- 无。
String
示例
使用示例
Query
Response
revision
引入版本:v22.7.0 返回当前 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 对数据块中每一行的聚合函数状态进行累积。 语法agg_state— 聚合函数状态。AggregateFunctiongrouping— 可选。分组键。如果grouping的值发生变化,函数状态将被重置。它可以是任意一种定义了相等运算符的受支持数据类型。Any
Any
示例
使用 initializeAggregation 的使用示例
Query
Response
runningConcurrency
引入版本:v21.3.0 计算并发事件的数量。 每个事件都有开始时间和结束时间。 开始时间计入事件,而结束时间不计入事件。 开始时间列和结束时间列必须具有相同的数据类型。 该函数会针对每个事件的开始时间,计算处于活动状态的 (并发) 事件总数。该函数是非确定性的:对于相同的参数,它可能返回不同的结果。
start— 事件开始时间所在的列。Date或DateTime或DateTime64end— 事件结束时间所在的列。Date或DateTime或DateTime64
UInt32
示例
用法示例
Query
Response
runningDifference
引入版本:v1.1.0 计算数据块中相邻两行值之间的差值。 第一行返回0,后续各行返回与前一行的差值。
函数的结果取决于受影响的数据块以及块内数据的顺序。
计算 runningDifference() 时的行顺序可能与最终返回给用户的行顺序不同。
为避免这种情况,你可以创建一个带有 ORDER BY 的子查询,并在子查询外部调用该函数。
请注意,块大小会影响结果。
runningDifference 的内部状态会在每个新块开始时重置。
语法
x— 要计算逐行差分的列。Any
Query
Response
Query
Response
runningDifferenceStartingWithFirstValue
引入版本:v1.1.0 计算数据块中相邻行值之间的差值,但与runningDifference 不同,它返回的是第一行的实际值,而不是 0。
语法
x— 用于计算逐行差分的列。Any
Any
示例
使用示例
Query
Response
serverUUID
引入版本:v20.1.0 返回服务器首次启动时生成的随机唯一 UUID (v4) 。 该 UUID 会被持久保存,也就是说,服务器第二次、第三次等后续启动时返回的都是同一个 UUID。此函数是非确定性的:对于相同的参数,可能返回不同的结果。
- 无。
UUID
示例
使用示例
Query
Response
shardCount
引入版本:v21.9.0 返回分布式查询的分片总数。 如果查询不是分布式查询,则返回常量值0。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
0。UInt32
示例
用法示例
Query
Response
shardNum
自 v21.9.0 引入 返回在分布式查询中处理部分数据的分片索引。 索引从1 开始。
如果查询不是分布式查询,则返回常量值 0。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
0。UInt32
示例
使用示例
Query
Response
showCertificate
引入版本:v22.6.0 如果已配置,将显示当前服务器的 SSL 证书信息。 如果服务器没有证书,则返回空映射,例如证书通过 ACME 配置但尚未签发时。 有关如何将 ClickHouse 配置为使用 OpenSSL 证书验证连接的更多信息,请参见 配置 TLS。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
Map(String, String)
示例
使用示例
Query
Response
sleep
引入版本:v1.1.0 按指定秒数暂停查询的执行。 该函数主要用于测试和调试。 通常不应在生产环境中使用sleep() 函数,因为它可能会对查询性能和系统响应速度产生负面影响。
不过,在以下场景中它可能会很有用:
- 测试:在测试或对 ClickHouse 进行基准测试时,你可能希望模拟延迟或引入暂停,以观察系统在特定条件下的表现。
- 调试:如果你需要在某个特定时间点检查系统状态或查询执行情况,可以使用
sleep()引入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,你可能希望模拟真实场景中的延迟或暂停,例如网络延迟或对外部系统的依赖。
allow_sleep) 。
语法
seconds— 暂停查询执行的秒数,最长为 3 秒。可使用浮点数来指定小数秒。const UInt*或const Float*
0。UInt8
示例
使用示例
Query
Response
sleepEachRow
Introduced in: v1.1.0 将查询执行按结果集中的每一行暂停指定的秒数。sleepEachRow() 函数主要用于测试和调试,类似于 sleep() 函数。
它可以在处理每一行时模拟延迟或插入暂停,这在以下场景中很有用:
- 测试:在特定条件下测试或对 ClickHouse 进行基准测试时,可以使用
sleepEachRow()为处理的每一行模拟延迟或插入暂停。 - 调试:如果你需要针对处理的每一行检查系统状态或查询执行情况,可以使用
sleepEachRow()插入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,你可能希望模拟真实场景中每处理一行都会发生延迟或暂停的情况,例如与外部系统交互或遇到网络延迟时。
seconds— 结果集中的每一行在查询执行时暂停的秒数,最长为 3 秒。可以使用浮点值来指定秒的小数部分。const UInt*或const Float*
0。UInt8
示例
用法示例
Query
Response
structureToCapnProtoSchema
引入版本:v23.8.0 用于将 ClickHouse 表结构转换为 CapnProto 格式 schema 的函数 语法- 无。
Query
Response
structureToProtobufSchema
引入版本:v23.8.0 将 ClickHouse 表结构转换为 Protobuf 格式的 schema。 此函数接收 ClickHouse 表结构定义,并将其转换为采用 proto3 语法的 Protocol Buffers (Protobuf) schema 定义。这对于生成与 ClickHouse 表结构相匹配、可用于数据交换的 Protobuf schema 非常有用。 语法structure— 以字符串形式表示的 ClickHouse 表结构定义 (例如:‘column1 Type1, column2 Type2’) 。Stringmessage_name— 生成的 schema 中的 Protobuf 消息类型名称。String
String
示例
将 ClickHouse 结构转换为 Protobuf schema
Query
Response
tcpPort
引入版本:v20.12.0 返回服务器正在监听的原生接口 TCP 端口号。 如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应各个分片。 否则会产生一个常量值。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
UInt16
示例
使用示例
Query
Response
throwIf
引入版本:v1.1.0 如果参数 x 为 true,则抛出异常。 要使用error_code 参数,必须启用配置参数 allow_custom_error_code_in_throw。
语法
x— 要检查的条件。Anymessage— 可选。自定义错误信息。const Stringerror_code— 可选。自定义错误代码。const Int8/16/32
false,则返回 0;如果条件为 true,则抛出异常。UInt8
示例
用法示例
Query
Response
toColumnTypeName
引入版本:v1.1.0 返回给定值的数据类型内部名称。 与函数toTypeName 不同,返回的数据类型可能包含内部包装列,如 Const 和 LowCardinality。
此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
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。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
start_csn、local_tid、host_id 和 session_node_version 组成的 Tuple。
start_csn:全局顺序号,即该事务开始时看到的最新提交时间戳。local_tid:本地顺序号,对于该主机在特定 start_csn 下启动的每个事务都是唯一的。host_id:启动该事务的主机 UUID。session_node_version:事务开始时该主机 session znode 的版本;可让 peer 在各副本间检测出属于已失效 session 的 TID。Tuple(UInt64, UInt64, UUID, Int64)
Query
Response
transactionLatestSnapshot
引入版本:v22.6.0 返回可用于读取的某个事务的最新快照 (提交序列号) 。
语法
- 无。
UInt64
示例
使用示例
Query
Response
transactionOldestSnapshot
引入版本:v22.6.0 返回某个正在运行的事务可见的最早快照 (提交序列号) 。
语法
- 无。
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_from和array_to必须包含相同数量的元素- 对于 4 参数版本:
transform(T, Array(T), Array(U), U) -> U,其中T和U可以是不同但兼容的类型 - 对于 3 参数版本:
transform(T, Array(T), Array(T)) -> T,其中所有类型都必须相同
x— 要转换的值。(U)Int*或Decimal或Float*或String或Date或DateTimearray_from— 用于查找匹配项的常量值数组。Array((U)Int*)或Array(Decimal)或Array(Float*)或Array(String)或Array(Date)或Array(DateTime)array_to— 常量值数组,用于返回与array_from中匹配项对应的值。Array((U)Int*)或Array(Decimal)或Array(Float*)或Array(String)或Array(Date)或Array(DateTime)default— 可选。如果在array_from中找不到x,则返回该值。如果省略,则原样返回x。(U)Int*或Decimal或Float*或String或Date或DateTime
x 与 array_from 中的某个元素匹配,则返回 array_to 中对应的值;否则返回 default (如果提供) 或 x (如果未提供 default) 。Any
示例
transform(T, Array(T), Array(U), U) -> U
Query
Response
Query
Response
uniqThetaIntersect
引入版本:v22.9.0 对两个 uniqThetaSketch 对象进行交集计算 (集合运算 ∩) ,结果是一个新的 uniqThetaSketch。 语法uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
使用示例
Query
Response
uniqThetaNot
引入版本:v22.9.0 对两个 uniqThetaSketch 对象执行 a_not_b 计算 (集合运算 ×) ,返回一个新的 uniqThetaSketch。 语法uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
用法示例
Query
Response
uniqThetaUnion
在 v22.9.0 中引入 对两个 uniqThetaSketch 对象进行并集计算 (集合运算 ∪) ,结果为一个新的 uniqThetaSketch。 语法uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
用法示例
Query
Response
运行时间
引入版本:v1.1.0 返回服务器的运行时间,单位为秒。 如果在分布式表中执行,此函数会生成一个普通列,其值对应每个分片。 否则,它会生成一个常量值。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
UInt32
示例
使用示例
Query
Response
variantElement
引入版本:v25.2.0 从Variant 列中提取指定类型的列。
语法
variant— Variant 列。Varianttype_name— 要提取的 Variant 类型名称。Stringdefault_value— 如果variant中不存在指定的 Variant 类型,则使用该默认值。可以是任意类型。可选。Any
Any
示例
使用示例
Query
Response
variantType
自 v24.2.0 起引入 返回Variant 列中每一行的 Variant 类型名称。如果该行为 NULL,则返回 ‘None’。
语法
variant— Variant 列。Variant
Enum
示例
用法示例
Query
Response
version
引入版本:v1.1.0 以字符串形式返回 ClickHouse 的当前版本,格式为:major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release。
如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应各个分片。
否则,它会生成一个常量值。
此函数是非确定性的:对于相同参数,它可能返回不同结果。
- 无。
String
示例
用法示例
Query
Response
visibleWidth
引入版本:v1.1.0 计算以文本格式 (制表符分隔) 将值输出到控制台时的大致宽度。 系统使用该函数来实现 Pretty formats。 在 Pretty formats 中,NULL 表示为与 NULL 对应的字符串。
语法
x— 任意数据类型的值。Any
UInt64
示例
计算 NULL 的可见宽度
Query
Response
zookeeperSessionUptime
引入版本:v21.11.0 返回当前 ZooKeeper 会话的运行时间 (以秒为单位) 。此函数是非确定性的:对于相同的参数,它可能返回不同的结果。
- 无。
UInt32
示例
使用示例
Query
Response