其他函数
以下函数文档是从 system.functions 系统表生成的。
FQDN
引入于: v20.1
返回 ClickHouse 服务器的完全限定域名。
语法
别名: fullHostName
参数
- 无。
返回值
返回 ClickHouse 服务器的完全限定域名。 String
示例
使用示例
MACNumToString
引入于:v1.1
将 UInt64 数字解释为大端格式的 MAC 地址。返回格式为 AA:BB:CC:DD:EE:FF(十六进制数字用冒号分隔)的 MAC 地址字符串。
语法
参数
num— UInt64 数字。UInt64
返回值
返回格式为 AA:BB:CC:DD:EE:FF的 MAC 地址。 String
示例
使用示例
MACStringToNum
引入于:v1.1
是 MACNumToString 的反函数。如果 MAC 地址格式无效,则返回 0。
语法
参数
s— MAC 地址字符串。String
返回值
返回 UInt64 数字。 UInt64
示例
使用示例
MACStringToOUI
引入于:v1.1
给定格式为 AA:BB:CC:DD:EE:FF(十六进制数字用冒号分隔)的 MAC 地址,返回前三个八位字节作为 UInt64 数字。如果 MAC 地址格式无效,则返回 0。
语法
参数
s— MAC 地址字符串。String
返回值
前三个八位字节作为 UInt64 数字。 UInt64
示例
使用示例
__applyFilter
引入于: v25.10
用于 JOIN 运行时过滤的特殊函数。
语法
参数
filter_name— 运行时过滤器的内部名称。由 BuildRuntimeFilterStep 构建。Stringkey— 要检查是否存在于过滤器中的任何类型的值
返回值
如果应过滤该键,则为 False Bool
示例
示例
__patchPartitionID
引入于:v25.5
内部函数。接收一个部分的名称和补丁部分列名的哈希值。返回补丁部分的划分名称。参数必须是正确的部件名称,否则行为未定义。
语法
参数
- 无。
返回值
示例
authenticatedUser
引入于:v25.11
如果会话用户使用 EXECUTE AS 命令切换,则此函数返回用于身份验证和创建会话的原始用户名。别名: authUser()
语法
别名: authUser
参数
- 无。
返回值
经过身份验证的用户名。 String
示例
使用示例
bar
引入于:v1.1
构建条形图。当 x = max 时,绘制一个宽度与 (x - min) 成比例且等于 width 个字符的带。带的绘制精度为符号的八分之一。
语法
参数
x— 要显示的大小。(U)Int*或Float*或Decimalmin— 最小值。(U)Int*或Float*或Decimalmax— 最大值。(U)Int*或Float*或Decimalwidth— 可选。条形的宽度(以字符为单位)。默认值为80。const (U)Int*或const Float*或const Decimal
返回值
返回一个 Unicode 艺术条形字符串。 String
示例
使用示例
blockNumber
引入于:v1.1
返回包含该行的 块 的单调递增序列号。返回的块号会尽力更新,即可能不完全准确。
语法
参数
- 无。
返回值
数据块中行的序列号。 UInt64
示例
基本用法
blockSerializedSize
引入于:v20.3
返回磁盘上值块的未压缩大小(以字节为单位)。
语法
参数
x1[, x2, ...]— 获取值块的未压缩大小的任意数量的值。Any
返回值
返回将值块写入磁盘而不进行压缩所需的字节数。 UInt64
示例
使用示例
blockSize
引入于:v1.1
在 ClickHouse 中,查询以 块(块)处理。此函数返回调用该函数时块的大小(行数)。
语法
参数
- 无。
返回值
返回当前块中的行数。 UInt64
示例
使用示例
buildId
引入于:v20.5
返回由编译器为正在运行的 ClickHouse 服务器二进制文件生成的构建 ID。如果在分布式表的上下文中执行,则此函数生成具有与每个分片相关值的普通列。否则,它会生成一个常量值。
语法
参数
- 无。
返回值
返回构建 ID。 String
示例
使用示例
byteSize
引入于:v21.1
返回其参数在内存中未压缩字节大小的估计值。对于 String 参数,该函数返回字符串长度 + 8(长度)。如果该函数有多个参数,则该函数会累积其字节大小。
语法
参数
arg1[, arg2, ...]— 估计未压缩字节大小的任何数据类型的值。Any
返回值
返回参数在内存中的字节大小估计值。 UInt64
示例
使用示例
多个参数
catboostEvaluate
引入于: v22.9
评估外部 catboost 模型。 CatBoost 是 Yandex 开发的用于机器学习的开源梯度提升库。接受指向 catboost 模型和模型参数(特征)的路径。
先决条件
- 构建 catboost 评估库
在评估 catboost 模型之前,必须使 libcatboostmodel.<so|dylib> 库可用。请参阅 CatBoost 文档 了解如何编译它。
接下来,在 clickhouse 配置文件中指定 libcatboostmodel.<so|dylib> 的路径
出于安全和隔离的原因,模型评估不在服务器进程中运行,而是在 clickhouse-library-bridge 进程中运行。在第一次执行 catboostEvaluate() 时,如果尚未运行,服务器将启动库桥接进程。两个进程使用 HTTP 接口进行通信。默认情况下,使用端口 9012。可以如下指定不同的端口 - 如果端口 9012 已经被分配给其他服务,这将很有用。
- 使用 libcatboost 训练 catboost 模型
请参阅 训练和应用模型 了解如何从训练数据集训练 catboost 模型。
语法
参数
path_to_model— Catboost 模型的路径。const Stringfeature— 一个或多个模型特征/参数。Float*
返回值
返回模型评估结果。 Float64
示例
catboostEvaluate
colorOKLABToSRGB
引入于:v26.2
将颜色从 OKLab 感知颜色空间转换为 sRGB 颜色空间。
输入颜色指定在 OKLab 颜色空间中。如果输入值超出典型的 OKLab 范围,则结果未定义。
OKLab 使用三个分量
- L:感知亮度(通常在 [0..1] 范围内)
- a:绿-红对抗轴
- b:蓝-黄对抗轴
a 和 b 分量在理论上是无界的,但在实践中介于 -0.4 和 0.4 之间。OKLab 旨在具有感知均匀性,同时保持计算成本低廉。
转换包括以下阶段
- 从 OKLab 到线性 sRGB 的转换。
- 从线性 sRGB 到伽马编码 sRGB 的转换。
可选的伽马参数指定在将线性 sRGB 转换回伽马编码 RGB 值时使用的指数。如果未指定,则使用默认伽马值以与 colorSRGBToOKLAB 保持一致。
有关 OKLab 颜色空间及其与 sRGB 的关系,请参阅 https://mdn.org.cn/en-US/docs/Web/CSS/Reference/Values/color_value/oklab 。
语法
参数
tuple— 一个包含三个数值L、a、b的元组,其中L在[0...1]范围内。Tuple(Float64, Float64, Float64)gamma— 可选。用于通过对每个通道x应用(x ^ (1 / gamma)) * 255将线性 sRGB 转换回 sRGB 的指数。默认值为2.2。Float64
返回值
返回表示 sRGB 颜色值的元组 (R, G, B)。 Tuple(Float64, Float64, Float64)
示例
将 OKLAB 转换为 sRGB(浮点数)
将 OKLAB 转换为 sRGB(UInt8)
colorOKLCHToSRGB
引入于:v25.7
将颜色从 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 到线性 sRGB
- 线性 sRGB 到 sRGB
第二个参数 gamma 在最后阶段使用。
有关 OKLCH 空间中的颜色及其与 sRGB 颜色的对应关系,请参阅 https://oklch.com/。
语法
参数
tuple— 一个包含三个数值L、C、H的元组,其中L的范围是[0...1],C >= 0,并且H的范围是[0...360]。Tuple(Float64, Float64, Float64)gamma— 可选。用于通过对每个通道x应用(x ^ (1 / gamma)) * 255将线性 sRGB 转换回 sRGB 的指数。默认值为2.2。Float64
返回值
返回表示 sRGB 颜色值的元组 (R, G, B)。 Tuple(Float64, Float64, Float64)
示例
将 OKLCH 转换为 sRGB
将 OKLCH 转换为 sRGB (UInt8)
colorSRGBToOKLAB
引入于:v26.2
将以 sRGB 色彩空间编码的颜色转换为感知上统一的 OKLAB 色彩空间。
如果任何输入通道超出 [0...255] 范围,或者 gamma 值不为正数,则行为未定义。
OKLAB 是一种感知上统一的色彩空间。它的三个坐标是 L(亮度,范围为 [0...1])、a (绿-红轴) 和 b (蓝-黄轴)。OKLab 的设计旨在感知上统一,同时保持计算成本低廉。
转换包括两个阶段
- sRGB 到线性 sRGB
- 线性 sRGB 到 OKLab
语法
参数
tuple— 包含三个值 R、G、B 的元组,范围为[0...255]。Tuple(UInt8, UInt8, UInt8)gamma— 可选。用于通过将(x / 255)^gamma应用于每个通道x来线性化 sRGB 的指数。默认值为2.2。Float64
返回值
返回一个元组 (L, a, b),表示 OKLAB 色彩空间的值。 Tuple(Float64, Float64, Float64)
示例
将 sRGB 转换为 OKLAB
colorSRGBToOKLCH
引入于:v25.7
将以 sRGB 色彩空间编码的颜色转换为感知上统一的 OKLCH 色彩空间。
如果任何输入通道超出 [0...255] 范围,或者 gamma 值不为正数,则行为未定义。
OKLCH 是 OKLab 色彩空间的圆柱版本。它的三个坐标是 L(亮度,范围为 [0...1])、C(色度,>= 0)和 H(以度为单位的色相,范围为 [0...360])。OKLab/OKLCH 的设计旨在感知上统一,同时保持计算成本低廉。
转换包括三个阶段
- sRGB 到线性 sRGB
- 线性 sRGB 到 OKLab
- OKLab 到 OKLCH。
有关 OKLCH 空间中颜色的参考,以及它们与 sRGB 颜色的对应关系,请参阅 https://OKLCH.com/。
语法
参数
tuple— 包含三个值 R、G、B 的元组,范围为[0...255]。Tuple(UInt8, UInt8, UInt8)gamma— 可选。用于通过将(x / 255)^gamma应用于每个通道x来线性化 sRGB 的指数。默认值为2.2。Float64
返回值
返回一个元组 (L, C, H),表示 OKLCH 色彩空间的值。 Tuple(Float64, Float64, Float64)
示例
将 sRGB 转换为 OKLCH
connectionId
引入于:v21.3
返回提交当前查询的客户端的连接 ID。此函数在调试场景中最为有用。它被创建用于与 MySQL 的 CONNECTION_ID 函数兼容。它通常不用于生产查询。
语法
参数
- 无。
返回值
返回当前客户端的连接 ID。 UInt64
示例
使用示例
countDigits
引入于: v20.8
返回表示一个值所需的十进制位数。
此函数考虑了十进制值的刻度,即它计算底层整数类型的结果,即 (value * scale)。
例如
countDigits(42) = 2countDigits(42.000) = 5countDigits(0.04200) = 4
可以使用 countDigits(x) > 18 检查 Decimal64 的十进制溢出,但它比 isDecimalOverflow 慢。
语法
参数
返回值
返回表示 x 所需的位数。 UInt8
示例
使用示例
currentDatabase
引入于:v1.1
返回当前数据库的名称。在 CREATE TABLE 查询的表引擎参数中,需要指定数据库时很有用。
另请参阅 SET 语句。
语法
别名:current_database、SCHEMA、DATABASE
参数
- 无。
返回值
返回当前数据库名称。 String
示例
使用示例
currentProfiles
引入于: v21.9
返回当前用户的设置配置文件数组。
语法
参数
- 无。
返回值
返回当前用户的设置配置文件数组。 Array(String)
示例
使用示例
currentQueryID
引入于:v
返回当前查询 ID。
语法
别名:current_query_id
参数
- 无。
返回值
示例
示例
currentRoles
引入于: v21.9
返回分配给当前用户的角色数组。
语法
参数
- 无。
返回值
返回分配给当前用户的角色数组。 Array(String)
示例
使用示例
currentSchemas
引入于:v23.7
与函数 currentDatabase 相同,但
- 接受一个布尔参数,该参数将被忽略
- 将数据库名称作为单个值的数组返回。
函数 currentSchemas 仅存在为了与 PostgreSQL 兼容。请使用 currentDatabase 代替。
另请参阅 SET 语句。
语法
别名:current_schemas
参数
bool— 一个布尔值,将被忽略。Bool
返回值
返回一个包含当前数据库名称的单元素数组。 Array(String)
示例
使用示例
currentUser
引入于: v20.1
返回当前用户名。在分布式查询的情况下,返回发起查询的用户的名称。
语法
别名:current_user、user
参数
- 无。
返回值
返回当前用户名,否则返回发起查询的用户的登录名。 String
示例
使用示例
defaultProfiles
引入于: v21.9
返回当前用户的默认设置配置文件名称数组。
语法
参数
- 无。
返回值
返回当前用户的默认设置配置文件名称数组。 Array(String)
示例
使用示例
defaultRoles
引入于: v21.9
返回当前用户的默认角色数组。
语法
参数
- 无。
返回值
返回当前用户的默认角色数组。 Array(String)
示例
使用示例
defaultValueOfArgumentType
引入于:v1.1
返回给定数据类型的默认值。不包括用户设置的自定义列的默认值。
语法
参数
expression— 任意类型的值或产生任意类型值的表达式。Any
返回值
返回数字的 0,字符串的空字符串或可为空类型的 NULL。 UInt8 或 String 或 NULL
示例
使用示例
可为空示例
defaultValueOfTypeName
引入于:v1.1
返回给定类型名称的默认值。
语法
参数
type— 表示类型名称的字符串。String
返回值
返回给定类型名称的默认值:数字的 0,字符串的空字符串,或可为空类型的 NULL。 UInt8 或 String 或 NULL
示例
使用示例
可为空示例
displayName
引入于:v22.11
返回 config 中的 display_name 的值,或者如果没有设置,则返回服务器的完全限定域名 (FQDN)。
语法
参数
- 无。
返回值
返回 config 中的 display_name 的值,或者如果没有设置,则返回服务器 FQDN。 String
示例
使用示例
dumpColumnStructure
引入于:v1.1
输出列及其数据类型的内部结构的详细描述。
语法
参数
x— 获取其描述的值。Any
返回值
返回用于表示该值的列结构的描述。 String
示例
使用示例
enabledProfiles
引入于: v21.9
返回当前用户启用的设置配置文件名称数组。
语法
参数
- 无。
返回值
返回当前用户启用的设置配置文件名称数组。 Array(String)
示例
使用示例
enabledRoles
引入于: v21.9
返回当前用户启用的角色数组。
语法
参数
- 无。
返回值
返回当前用户启用的角色名称数组。 Array(String)
示例
使用示例
errorCodeToName
引入于:v20.12
返回数字 ClickHouse 错误代码的文本名称。从数字错误代码到错误名称的映射可在 此处 找到。
语法
参数
返回值
返回 error_code 的文本名称。 String
示例
使用示例
file
引入于:v21.3
将文件读取为字符串并将其数据加载到指定的列中。 不会解释文件内容。
另请参阅 file 表函数。
语法
参数
path— 相对于user_files_path的文件路径。 支持通配符*、**、?、{abc,def}和{N..M},其中N、M是数字,而'abc', 'def'是字符串。Stringdefault— 如果文件不存在或无法访问,则返回的值。String或NULL
返回值
返回文件内容作为字符串。 String
示例
将文件插入到表中
filesystemAvailable
引入于: v20.1
返回托管数据库持久性的文件系统中的可用空间量。 返回的值始终小于总可用空间(filesystemUnreserved),因为操作系统会保留一些空间。
语法
参数
disk_name— 可选。 要查找可用空间量的磁盘名称。 如果省略,则使用默认磁盘。String或FixedString
返回值
返回剩余可用空间量(以字节为单位)。 UInt64
示例
使用示例
filesystemCapacity
引入于: v20.1
返回文件系统容量(以字节为单位)。 需要配置 path 到数据目录。
语法
参数
disk_name— 可选。 要获取容量的磁盘名称。 如果省略,则使用默认磁盘。String或FixedString
返回值
返回文件系统容量(以字节为单位)。 UInt64
示例
使用示例
filesystemUnreserved
引入于:v22.12
返回托管数据库持久性的文件系统上的总可用空间量(以前为 filesystemFree)。 另请参阅 filesystemAvailable。
语法
参数
disk_name— 可选。 要查找总可用空间的磁盘名称。 如果省略,则使用默认磁盘。String或FixedString
返回值
返回可用空间量(以字节为单位)。 UInt64
示例
使用示例
finalizeAggregation
引入于:v1.1
给定聚合状态,此函数返回聚合结果(或使用 -State 组合器时的最终状态)。
语法
参数
state— 聚合状态。AggregateFunction
返回值
返回聚合的最终结果。 Any
示例
使用示例
与 initializeAggregation 结合使用
flipCoordinates
引入于: v25.10
翻转几何对象的 x 和 y 坐标。 此操作交换纬度和经度,这对于在不同的坐标系之间转换或更正坐标顺序很有用。
对于 Point,它交换 x 和 y 坐标。 对于复杂的几何体(LineString、Polygon、MultiPolygon、Ring、MultiLineString),它递归地将变换应用于每个坐标对。
该函数支持单个几何类型(Point、Ring、Polygon、MultiPolygon、LineString、MultiLineString)和 Geometry 变体类型。
语法
参数
geometry— 要转换的几何体。 支持的类型:Point (Tuple(Float64, Float64))、Ring (Array(Point))、Polygon (Array(Ring))、MultiPolygon (Array(Polygon))、LineString (Array(Point))、MultiLineString (Array(LineString)) 或 Geometry(包含这些类型中的任何一种类型的变体)。
返回值
翻转坐标的几何体。 返回类型与输入类型匹配。 Point 或 Ring 或 Polygon 或 MultiPolygon 或 LineString 或 MultiLineString 或 Geometry
示例
basic_point
ring
polygon
geometry_wkt
geometry_polygon_wkt
formatQuery
引入于:v
返回给定 SQL 查询的格式化版本,可能包含多行。 如果发生解析错误,则抛出异常。 [示例:multiline]
语法
参数
query— 要格式化的 SQL 查询。 String
返回值
格式化的查询 String
示例
multiline
formatQueryOrNull
引入于:v
返回给定 SQL 查询的格式化版本,可能包含多行。 如果发生解析错误,则返回 NULL。 [示例:multiline]
语法
参数
query— 要格式化的 SQL 查询。 String
返回值
格式化的查询 String
示例
multiline
formatQuerySingleLine
引入于:v
类似于 formatQuery(),但返回的格式化字符串不包含换行符。 如果发生解析错误,则抛出异常。 [示例:multiline]
语法
参数
query— 要格式化的 SQL 查询。 String
返回值
格式化的查询 String
示例
multiline
formatQuerySingleLineOrNull
引入于:v
类似于 formatQuery(),但返回的格式化字符串不包含换行符。 如果发生解析错误,则返回 NULL。 [示例:multiline]
语法
参数
query— 要格式化的 SQL 查询。String
返回值
格式化的查询 String
示例
multiline
formatReadableDecimalSize
引入于:v22.11
给定大小(字节数),此函数返回一个可读的、四舍五入的大小,带有后缀(KB、MB 等),作为字符串。
此函数的相反操作是 parseReadableSize。
语法
参数
x— 字节大小。UInt64
返回值
返回带有后缀的可读的、四舍五入的大小作为字符串。 String
示例
格式化文件大小
formatReadableQuantity
引入于:v20.10
给定一个数字,此函数返回一个四舍五入的数字,带有后缀(千、百万、十亿等),作为字符串。
此函数接受任何数值类型作为输入,但在内部将其转换为 Float64。 对于大值,结果可能不是最优的。
语法
参数
x— 要格式化的数字。UInt64
返回值
返回带有后缀的四舍五入的数字作为字符串。 String
示例
格式化带有后缀的数字
formatReadableSize
引入于:v1.1
给定大小(字节数),此函数返回一个可读的、四舍五入的大小,带有后缀(KiB、MiB 等),作为字符串。
此函数的相反操作是 parseReadableSize、parseReadableSizeOrZero 和 parseReadableSizeOrNull。 此函数接受任何数值类型作为输入,但在内部将其转换为 Float64。 对于大值,结果可能不是最优的。
语法
别名:FORMAT_BYTES
参数
x— 字节大小。UInt64
返回值
返回带有后缀的可读的、四舍五入的大小作为字符串。 String
示例
格式化文件大小
formatReadableTimeDelta
引入于:v20.12
给定一个时间间隔(秒),此函数返回一个带有年/月/日/小时/分钟/秒/毫秒/微秒/纳秒的时间间隔作为字符串。
此函数接受任何数值类型作为输入,但在内部将其转换为 Float64。 对于大值,结果可能不是最优的。
语法
参数
column— 包含数字时间间隔的列。Float64maximum_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
示例
使用示例
使用最大单位
generateRandomStructure
引入于:v23.5
生成随机表结构,格式为 column1_name column1_type, column2_name column2_type, ...。
语法
参数
number_of_columns— 结果表结构中所需的列数。 如果设置为 0 或Null,则列数将随机生成,范围为 1 到 128。 默认值:Null。UInt64seed— 随机种子,用于生成稳定的结果。 如果未指定种子或设置为Null,则随机生成种子。UInt64
返回值
随机生成的表结构。 String
示例
使用示例
使用指定的列数
使用指定的种子
generateSerialID
引入于:v25.1
生成并返回从先前的计数器值开始的连续数字。 此函数接受一个字符串参数 - 系列标识符,以及一个可选的起始值。 服务器应配置 Keeper。 系列存储在 Keeper 节点下的路径中,该路径可以在服务器配置中的 path 中配置。
语法
参数
series_identifier— 系列标识符const Stringstart_value— 可选。 计数器的起始值。 默认值为 0。 注意:仅在创建新系列时使用此值,如果系列已存在则忽略。UInt*
返回值
从先前的计数器值开始返回连续数字。 UInt64
示例
首次调用
第二次调用
列调用
带有起始值
带有起始值的第二次调用
getClientHTTPHeader
引入于:v24.5
获取 HTTP 标头的值。 如果没有这样的标头,或者当前请求不是通过 HTTP 接口执行的,则该函数返回一个空字符串。 某些 HTTP 标头(例如 Authentication 和 X-ClickHouse-*)受到限制。
allow_get_client_http_header该函数需要启用设置 allow_get_client_http_header。 出于安全原因,该设置默认情况下未启用,因为某些标头(例如 Cookie)可能包含敏感信息。
对于此函数,HTTP 标头区分大小写。 如果该函数在分布式查询的上下文中被使用,则它仅在发起节点上返回非空结果。
语法
参数
name— HTTP 标头的名称。String
返回值
返回标头的值。 String
示例
使用示例
getMacro
引入于: v20.1
从服务器配置文件中返回宏的值。 宏在配置文件的 <macros> 部分中定义,可用于通过方便的名称区分服务器,即使它们具有复杂的hostname。 如果该函数在分布式表的上下文中执行,它将生成一个包含与每个分片相关值的普通列。
语法
参数
name— 要检索的宏的名称。const String
返回值
返回指定宏的值。 String
示例
基本用法
getMaxTableNameLengthForDatabase
引入于:v
返回指定数据库中表名的最大长度。
语法
参数
database_name— 指定数据库的名称。String
返回值
返回最大表名的长度,一个整数
示例
典型
getMergeTreeSetting
引入于: v25.6
返回 MergeTree 设置的当前值。
语法
参数
setting_name— 设置名称。String
返回值
返回合并树设置的当前值。
示例
使用示例
getOSKernelVersion
引入于:v21.11
返回包含操作系统内核版本的字符串。
语法
参数
- 无。
返回值
返回当前的操作系统内核版本。 String
示例
使用示例
getServerPort
引入于:v21.10
返回给定协议的服务器端口号。
语法
参数
port_name— 端口的名称。String
返回值
返回服务器端口号。 UInt16
示例
使用示例
getServerSetting
引入于: v25.6
返回给定的服务器设置名称的当前设置值。
语法
参数
setting_name— 服务器设置名称。String
返回值
返回服务器设置的当前值。 Any
示例
使用示例
getSetting
引入于:v20.7
返回设置的当前值。
语法
参数
setting_Name— 设置名称。const String
返回值
返回设置的当前值。 Any
示例
使用示例
getSettingOrDefault
引入于:v24.10
返回设置的当前值,或者如果当前配置文件中未设置该设置,则返回第二个参数指定的默认值。
语法
参数
setting_name— 设置名称。Stringdefault_value— 如果 custom_setting 未设置,则返回的值。 值可以是任何数据类型或 Null。
返回值
返回指定设置的当前值,或者如果该设置未设置,则返回 default_value。
示例
使用示例
getSizeOfEnumType
引入于:v1.1
返回给定 Enum 中的字段数。
语法
参数
x— 类型为Enum的值。Enum
返回值
返回带有 Enum 输入值的字段数。 UInt8/16
示例
使用示例
getSubcolumn
引入于:v
接收表达式或标识符以及包含子列名称的常量字符串。
返回从表达式中提取的请求子列。
语法
参数
- 无。
返回值
示例
getSubcolumn
getTypeSerializationStreams
引入于:v22.6
枚举数据类型的流路径。 此函数旨在用于开发用途。
语法
参数
col— 列或数据类型的字符串表示形式,将从中检测数据类型。Any
返回值
返回包含所有序列化子流路径的数组。 Array(String)
示例
tuple
map
globalVariable
引入于:v20.5
接受一个常量字符串参数,并返回具有该名称的全局变量的值。 此函数旨在与 MySQL 兼容,并且对于 ClickHouse 的正常操作没有用处或必要。 仅定义了几个虚拟全局变量。
语法
参数
name— 全局变量名称。String
返回值
返回变量 name 的值。 Any
示例
globalVariable
hasColumnInTable
引入于:v1.1
检查数据库表中是否存在特定列。 对于嵌套数据结构中的元素,该函数检查是否存在列。 对于嵌套数据结构本身,该函数返回 0。
语法
参数
database— 数据库的名称。const Stringtable— 表的名称。const Stringcolumn— 列的名称。const Stringhostname— 可选。 执行检查的远程服务器名称。const Stringusername— 可选。 远程服务器的用户名。const Stringpassword— 可选。 远程服务器的密码。const String
返回值
如果给定的列存在,则返回 1,否则返回 0。 UInt8
示例
检查现有列
检查不存在的列
hasThreadFuzzer
引入于:v20.6
返回线程模糊器是否启用。 此函数仅对测试和调试有用。
语法
参数
- 无。
返回值
返回线程模糊器是否有效。 UInt8
示例
检查线程模糊器状态
hostName
引入于:v20.5
返回执行此函数的主机名。 如果该函数在远程服务器上执行(分布式处理),则返回远程服务器名称。 如果该函数在分布式表的上下文中执行,它将生成一个包含与每个分片相关值的普通列。 否则,它会生成一个常量值。
语法
别名:hostname
参数
- 无。
返回值
返回主机名。 String
示例
使用示例
icebergBucket
引入于:v25.5
实现 iceberg bucket transform 的逻辑
语法
参数
N— 桶的数量,模数。const (U)Int*value— 要转换的源值。(U)Int*或Bool或Decimal或Float*或String或FixedString或UUID或Date或Time或DateTime
返回值
返回源值的 32 位哈希值。 Int32
示例
示例
icebergTruncate
引入于:v25.3
实现 iceberg truncate transform 的逻辑:https://iceberg.org.cn/spec/#truncate-transform-details。
语法
参数
返回值
与参数相同的类型
示例
示例
identity
引入于:v1.1
此函数返回您传递给它的参数,这对于调试和测试很有用。 它允许您绕过索引使用以查看完整的扫描性能。 查询分析器忽略 identity 函数内部的任何内容,在查找要使用的索引时,并且还会禁用常量折叠。
语法
参数
x— 输入值。Any
返回值
返回输入值不变。 Any
示例
使用示例
ignore
引入于:v1.1
接受任意参数,并无条件返回 0。
语法
参数
x— 一个输入值,未被使用,仅传递以避免语法错误。Any
返回值
始终返回 0。 UInt8
示例
使用示例
indexHint
引入于:v1.1
此函数旨在用于调试和内省。它忽略其参数并始终返回 1。参数不会被评估。
在索引分析期间,假定此函数的参数未包装在 indexHint 中。这允许您通过相应的条件选择索引范围内的的数据,但无需通过此条件进一步过滤。ClickHouse 中的索引是稀疏的,使用 indexHint 会产生比直接指定相同条件更多的数据。
说明
当您运行
ClickHouse 会执行两件事
- 使用索引查找哪些颗粒(约 8192 行的块)可能包含
key = 123 - 读取这些颗粒并逐行过滤,以仅返回
key = 123的行
即使它从磁盘读取 8192 行,它也只返回实际匹配的 1 行。
使用 indexHint 时,当您运行
ClickHouse 只执行一件事
- 使用索引查找可能包含 key = 123 的颗粒并返回这些颗粒中的所有行,不进行过滤。
它返回所有 8192 行,包括 key = 456、key = 789 等的行(所有存储在同一颗粒中的内容)。indexHint() 并非用于性能。它是用于调试和理解 ClickHouse 的索引工作原理的
- 我的条件选择哪些颗粒?
- 这些颗粒中有多少行?
- 我的索引是否被有效使用?
注意:使用 indexHint 函数无法优化查询。indexHint 函数不会优化查询,因为它不为查询分析提供任何额外信息。在 indexHint 函数内部有一个表达式,与没有 indexHint 函数相比,并没有任何好处。indexHint 函数只能用于内省和调试目的,并且不会提高性能。如果您看到其他人(ClickHouse 贡献者除外)使用 indexHint,则很可能是一个错误,您应该将其删除。
语法
参数
expression— 用于索引范围选择的任何表达式。Expression
返回值
在所有情况下都返回 1。 UInt8
示例
带有日期过滤的用法示例
initialQueryID
引入于:v1.1
返回当前初始查询的 ID。查询的其他参数可以从 system.query_log 中的字段 initial_query_id 中提取。
与 queryID 函数相比,initialQueryID 在不同的分片上返回相同的结果。
语法
别名:initial_query_id
参数
- 无。
返回值
返回当前初始查询的 ID。 String
示例
使用示例
initialQueryStartTime
引入于: v25.4
返回当前初始查询的开始时间。initialQueryStartTime 在不同的分片上返回相同的结果。
语法
别名:initial_query_start_time
参数
- 无。
返回值
返回当前初始查询的开始时间。 DateTime
示例
使用示例
initializeAggregation
引入于:v20.6
根据单个值计算聚合函数的结果。此函数可用于使用组合器 -State 初始化聚合函数。您可以创建聚合函数的状态并将它们插入到类型为 AggregateFunction 的列中,或将初始化的聚合作为默认值使用。
语法
参数
返回值
返回传递到函数的每一行聚合的结果。返回类型与 initializeAggregation 作为第一个参数接受的函数的返回类型相同。 Any
示例
使用 uniqState 的基本用法
使用 sumState 和 finalizeAggregation
isConstant
引入于:v20.3
返回参数是否为常量表达式。常量表达式是在查询分析期间(即在执行之前)已知结果的表达式。例如,超过 字面量 的表达式是常量表达式。此函数主要用于开发、调试和演示。
语法
参数
x— 要检查的表达式。Any
返回值
如果 x 是常量,则返回 1;如果 x 是非常量,则返回 0。 UInt8
示例
常量表达式
带有函数的常量
非常量表达式
now() 函数的行为
isDecimalOverflow
引入于: v20.8
检查十进制数是否具有太多位数,无法正确地适应具有给定精度的 Decimal 数据类型。
语法
参数
value— 要检查的十进制值。Decimalprecision— 可选。Decimal 类型的精度。如果省略,则使用第一个参数的初始精度。
返回值
如果十进制值超过其精度的位数,则返回 1;如果十进制值满足指定的精度,则返回 0。 UInt8
示例
使用示例
joinGet
引入于:v18.16
允许您以与从字典相同的方式从表中提取数据。使用指定的连接键从 Join 表中获取数据。
仅支持使用 ENGINE = Join(ANY, LEFT, <join_keys>) 语句 创建的表。
语法
参数
join_storage_table_name— 一个标识符,指示在哪里执行搜索。该标识符在默认数据库中搜索(请参阅配置文件中的参数default_database)。要覆盖默认数据库,请使用USE database_name查询,或通过点指定数据库和表,例如database_name.table_name。Stringvalue_column— 包含所需数据的表的列的名称。const Stringjoin_keys— 连接键列表。Any
返回值
返回与键列表对应的列表值。 Any
示例
使用示例
使用当前数据库中的表
将数组用作连接键
joinGetOrNull
引入于:v20.4
允许您以与从字典相同的方式从表中提取数据。使用指定的连接键从 Join 表中获取数据。与 joinGet 不同,如果缺少键,则返回 NULL。
仅支持使用 ENGINE = Join(ANY, LEFT, <join_keys>) 语句 创建的表。
语法
参数
join_storage_table_name— 一个标识符,指示在哪里执行搜索。该标识符在默认数据库中搜索(请参阅配置文件中的参数 default_database)。要覆盖默认数据库,请使用USE database_name查询,或通过点指定数据库和表,例如database_name.table_name。Stringvalue_column— 包含所需数据的表的列的名称。const Stringjoin_keys— 连接键列表。Any
返回值
返回与键列表对应的列表值,如果未找到键,则返回 NULL。 Any
示例
使用示例
lowCardinalityIndices
引入于:v18.12
返回 LowCardinality 列的字典中值的索引。索引从 1 开始。由于 LowCardinality 具有每个部分的字典,因此此函数可能为同一值在不同部分返回不同的索引。
语法
参数
col— 低基数列。LowCardinality
返回值
当前部分字典中值的索引。 UInt64
示例
使用示例
lowCardinalityKeys
引入于:v18.12
返回 LowCardinality 列的字典值。如果块小于或大于字典大小,则结果将被截断或用默认值扩展。由于 LowCardinality 具有每个部分的字典,因此此函数可能在不同部分返回不同的字典值。
语法
参数
col— 低基数列。LowCardinality
返回值
返回字典键。 UInt64
示例
lowCardinalityKeys
materialize
引入于:v1.1
将常量转换为包含单个值的完整列。完整列和常量在内存中表示方式不同。函数通常为普通参数和常量参数执行不同的代码,尽管结果通常应该相同。此函数可用于调试此行为。
语法
参数
x— 一个常量。Any
返回值
返回包含常量值的完整列。 Any
示例
使用示例
minSampleSizeContinuous
引入于:v23.10
计算比较连续指标均值的 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 个元素的命名元组:minimum_sample_size、detect_range_lower 和 detect_range_upper。它们分别是:所需的样本量,使用返回的所需样本量无法检测到的值的下限,计算方式为 baseline * (1 - mde),以及使用返回的所需样本量无法检测到的值的上限,计算方式为 baseline * (1 + mde) (Float64)。 Tuple(Float64, Float64, Float64)
示例
minSampleSizeContinuous
minSampleSizeConversion
引入于:v22.6
计算比较两个样本中转化率(比例)的 A/B 测试所需的最小样本量。
使用 本文 中描述的公式。假设治疗组和对照组的大小相等。返回一个组所需的样本量(即,整个实验所需的样本量是返回值的两倍)。
语法
参数
baseline— 基线转化率。Float*mde— 最小可检测效应 (MDE),作为百分点(例如,对于基线转化率 0.25,MDE 0.03 意味着预期的变化为 0.25 ± 0.03)。Float*power— 测试所需的统计功效(1 - II 类错误的概率)。Float*alpha— 测试所需的显著性水平(I 类错误的概率)。Float*
返回值
返回一个包含 3 个元素的命名元组:minimum_sample_size、detect_range_lower、detect_range_upper。它们分别是:所需的样本量,使用返回的所需样本量无法检测到的值的下限,计算方式为 baseline - mde,以及使用返回的所需样本量无法检测到的值的上限,计算方式为 baseline + mde。 Tuple(Float64, Float64, Float64)
示例
minSampleSizeConversion
neighbor
引入于: v20.1
返回当前行指定偏移量处列中的值。此函数已被弃用且容易出错,因为它操作数据的物理顺序,而这可能与用户期望的逻辑顺序不对应。请考虑使用适当的窗口函数代替。
可以通过设置 allow_deprecated_error_prone_window_functions = 1 来启用该函数。
语法
参数
column— 源列。Anyoffset— 相对于当前行的偏移量。正值向前查找,负值向后查找。Integerdefault_value— 可选。如果偏移量超出数据边界,则返回的值。如果未指定,则使用列类型的默认值。Any
返回值
返回指定偏移量处的值,或者超出范围时返回默认值。 Any
示例
使用示例
使用默认值
nested
引入于:v
此函数由 ClickHouse 引擎内部使用,不应直接使用。
从多个数组返回元组数组。
第一个参数必须是字符串常量数组,用于确定结果元组的名称。其他参数必须是相同大小的数组。
语法
参数
- 无。
返回值
示例
嵌套
normalizeQuery
引入于: v20.8
将字面量、字面量序列和复杂别名(包含空格、超过两位数字或至少 36 字节长的 UUID 等)替换为占位符 ?。
语法
参数
x— 字符序列。String
返回值
返回带有占位符的给定字符序列。 String
示例
使用示例
normalizeQueryKeepNames
引入于: v21.2
将字面量和字面量序列替换为占位符 ?,但不替换复杂别名(包含空格、超过两位数字或至少 36 字节长的 UUID 等)。这有助于更好地分析复杂的查询日志。
语法
参数
x— 字符序列。String
返回值
返回带有占位符的给定字符序列。 String
示例
使用示例
normalizedQueryHash
引入于: v20.8
为相似查询返回相同的 64 位哈希值,不包含字面量的值。有助于分析查询日志。
语法
参数
x— 字符序列。String
返回值
返回 64 位哈希值。 UInt64
示例
使用示例
normalizedQueryHashKeepNames
引入于: v21.2
与 normalizedQueryHash 类似,它为相似查询返回相同的 64 位哈希值,不包含字面量的值,但它不会在哈希之前将复杂别名(包含空格、超过两位数字或至少 36 字节长的 UUID 等)替换为占位符。有助于分析查询日志。
语法
参数
x— 字符序列。String
返回值
返回 64 位哈希值。 UInt64
示例
使用示例
parseReadableSize
引入于:v24.6
给定一个包含字节大小的字符串,以及 B、KiB、KB、MiB、MB 等作为单位(即 ISO/IEC 80000-13 或十进制字节单位),此函数返回相应的字节数。如果函数无法解析输入值,则会抛出异常。
此函数的操作逆运算是 formatReadableSize 和 formatReadableDecimalSize。
语法
参数
x— 带有 ISO/IEC 80000-13 或十进制字节单位的可读大小。String
返回值
返回字节数,向上舍入到最接近的整数。 UInt64
示例
使用示例
parseReadableSizeOrNull
引入于:v24.6
给定一个包含字节大小的字符串,以及 B、KiB、KB、MiB、MB 等作为单位(即 ISO/IEC 80000-13 或十进制字节单位),此函数返回相应的字节数。如果函数无法解析输入值,则返回 NULL。
此函数的操作逆运算是 formatReadableSize 和 formatReadableDecimalSize。
语法
参数
x— 带有 ISO/IEC 80000-13 或十进制字节单位的可读大小。String
返回值
返回字节数,向上舍入到最接近的整数,或者如果无法解析输入则返回 NULL Nullable(UInt64)
示例
使用示例
parseReadableSizeOrZero
引入于:v24.6
给定一个包含字节大小的字符串,以及 B、KiB、KB、MiB、MB 等作为单位(即 ISO/IEC 80000-13 或十进制字节单位),此函数返回相应的字节数。如果函数无法解析输入值,则返回 0。
此函数的操作逆运算是 formatReadableSize 和 formatReadableDecimalSize。
语法
参数
x— 带有 ISO/IEC 80000-13 或十进制字节单位的可读大小。String
返回值
返回字节数,向上舍入到最接近的整数,或者如果无法解析输入则返回 0。 UInt64
示例
使用示例
parseTimeDelta
引入于:v22.7
解析一个由时间单位后跟数字序列组成的字符串。
时间 delta 字符串使用以下时间单位规范
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
可以使用分隔符(空格、;、-、+、,、:)组合多个时间单位。
年份和月份的长度是近似值:一年是 365 天,一个月是 30.5 天。
语法
参数
timestr— 由时间单位后跟数字序列组成的字符串。String
返回值
秒数。 Float64
示例
使用示例
复杂的时间单位
partitionId
引入于:v21.4
计算 分区 ID。
此函数速度较慢,不应为大量行调用。
语法
别名:partitionID
参数
column1, column2, ...— 返回分区 ID 的列。
返回值
返回该行所属的分区 ID。 String
示例
使用示例
queryID
引入于: v21.9
返回当前查询的 ID。 可以从 system.query_log 表的 query_id 字段中提取查询的其他参数。
与 initialQueryID 函数不同,queryID 可以在不同的分片上返回不同的结果。
语法
别名: query_id
参数
- 无。
返回值
返回当前查询的 ID。 String
示例
使用示例
revision
引入于:v22.7
返回当前的 ClickHouse 服务器修订版本。
语法
参数
- 无。
返回值
返回当前的 ClickHouse 服务器修订版本。 UInt32
示例
使用示例
rowNumberInAllBlocks
引入于:v1.1
返回处理的每一行的唯一行号。
语法
参数
- 无。
返回值
返回从 0 开始的数据块中的行的序号。 UInt64
示例
使用示例
rowNumberInBlock
引入于:v1.1
对于由 rowNumberInBlock 处理的每个 块,返回当前行的编号。
返回的编号从每个块的 0 开始。
语法
参数
- 无。
返回值
返回从 0 开始的数据块中的行的序号。 UInt64
示例
使用示例
runningAccumulate
引入于:v1.1
为数据块的每一行累积聚合函数的状态。
状态会为每个新的数据块重置。 由于这种容易出错的行为,该函数已被弃用,建议使用 窗口函数 代替。 您可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
语法
参数
agg_state— 聚合函数的状态。AggregateFunctiongrouping— 可选。分组键。 如果grouping值发生变化,则函数的状态将重置。 它可以是定义了相等运算符的任何受支持的数据类型。Any
返回值
返回每个行的累积结果。 Any
示例
使用 initializeAggregation 的示例
runningConcurrency
引入于:v21.3
计算并发事件的数量。 每个事件都有开始时间和结束时间。 事件的开始时间包含在事件中,而结束时间不包含。 包含开始时间和结束时间的列必须具有相同的数据类型。 该函数计算每个事件开始时间的活动(并发)事件的总数。
事件必须按开始时间升序排序。 如果违反此要求,该函数将引发异常。 每个数据块都是单独处理的。 如果来自不同数据块的事件重叠,则无法正确处理它们。
建议使用 窗口函数 代替。
语法
参数
start— 包含事件开始时间的列。Date或DateTime或DateTime64end— 包含事件结束时间的列。Date或DateTime或DateTime64
返回值
返回每个事件开始时间的并发事件数。 UInt32
示例
使用示例
runningDifference
引入于:v1.1
计算数据块中两个连续行值之间的差异。 对于第一行返回 0,对于后续行返回与前一行的差异。
仅返回当前处理的数据块内的差异。 由于这种容易出错的行为,该函数已被弃用。 建议使用 窗口函数 代替。
您可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
该函数的结果取决于受影响的数据块和块中的数据顺序。 计算 runningDifference() 期间的行顺序可能与返回给用户的行顺序不同。 为了防止这种情况,您可以创建一个带有 ORDER BY 的子查询,并从子查询外部调用该函数。 请注意,块大小会影响结果。 runningDifference 状态的内部状态会为每个新的块重置。
语法
参数
x— 要计算运行差异的列。Any
返回值
返回连续值之间的差异,第一行为 0。
示例
使用示例
块大小影响示例
runningDifferenceStartingWithFirstValue
引入于:v1.1
计算数据块中连续行值之间的差异,但与 runningDifference 不同,它返回第一行的实际值而不是 0。
仅返回当前处理的数据块内的差异。 由于这种容易出错的行为,该函数已被弃用。 建议使用 窗口函数 代替。
您可以使用设置 allow_deprecated_error_prone_window_functions 来允许使用此函数。
语法
参数
x— 要计算运行差异的列。Any
返回值
返回连续值之间的差异,第一行为第一行的值。 Any
示例
使用示例
serverUUID
引入于: v20.1
返回服务器首次启动时生成的随机且唯一的 UUID (v4)。 UUID 会持久化,即第二次、第三次等服务器启动返回相同的 UUID。
语法
参数
- 无。
返回值
返回服务器的随机 UUID。 UUID
示例
使用示例
shardCount
引入于: v21.9
返回分布式查询的总分片数。 如果查询未分布式,则返回常量值 0。
语法
参数
- 无。
返回值
返回总分片数或 0。 UInt32
示例
使用示例
shardNum
引入于: v21.9
返回处理分布式查询中数据的一部分的分片的索引。 索引从 1 开始。 如果查询未分布式,则返回常量值 0。
语法
参数
- 无。
返回值
返回分片索引或常量 0。 UInt32
示例
使用示例
showCertificate
引入于:v22.6
显示当前服务器的 SSL 证书信息(如果已配置)。 有关如何配置 ClickHouse 以使用 OpenSSL 证书来验证连接的信息,请参阅 配置 TLS。
语法
参数
- 无。
返回值
返回与已配置 SSL 证书相关的键值对映射。 Map(String, String)
示例
使用示例
sleep
引入于:v1.1
通过指定的秒数暂停查询的执行。 该函数主要用于测试和调试目的。
通常不应在生产环境中使用 sleep() 函数,因为它可能会对查询性能和系统响应能力产生负面影响。 但是,它在以下场景中可能很有用
- 测试:在测试或基准测试 ClickHouse 时,您可能希望模拟延迟或引入暂停以观察系统在某些条件下的行为。
- 调试:如果您需要在特定时间点检查系统的状态或查询的执行情况,可以使用
sleep()引入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,您可能希望模拟实际场景中发生的延迟或暂停,例如网络延迟或外部系统依赖项。
重要的是谨慎使用 sleep() 函数,并且仅在必要时使用,因为它可能会对 ClickHouse 系统的整体性能和响应能力产生潜在影响。
出于安全原因,该函数只能在默认用户配置文件中执行(allow_sleep 已启用)。
语法
参数
seconds— 暂停查询执行的秒数,最大为 3 秒。 它可以是浮点值,以指定小数秒。const UInt*或const Float*
返回值
返回 0。 UInt8
示例
使用示例
sleepEachRow
引入于:v1.1
对于结果集中的每一行,暂停查询的执行指定秒数。
sleepEachRow() 函数主要用于测试和调试目的,类似于 sleep() 函数。 它允许您模拟延迟或引入对每个处理的行进行暂停,这在以下场景中很有用,例如
- 测试:在测试 ClickHouse 在特定条件下的性能时,可以使用
sleepEachRow()模拟延迟或引入对每个处理的行的暂停。 - 调试:如果您需要检查系统状态或查询的执行情况,以便处理每一行,可以使用
sleepEachRow()引入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,您可能希望模拟对每个处理的行发生延迟或暂停的实际场景,例如处理外部系统或网络延迟时。
与 sleep() 函数一样,重要的是谨慎使用 sleepEachRow() 并且仅在必要时使用,因为它可能会显着影响 ClickHouse 系统的整体性能和响应能力,尤其是在处理大型结果集时。
语法
参数
seconds— 暂停查询执行的秒数,对于结果集中的每一行,最大为 3 秒。 它可以是浮点值,以指定小数秒。const UInt*或const Float*
返回值
为每一行返回 0。 UInt8
示例
使用示例
structureToCapnProtoSchema
引入于:v
函数,将 ClickHouse 表结构转换为 CapnProto 格式架构
语法
参数
- 无。
返回值
示例
random
structureToProtobufSchema
引入于:v23.8
将 ClickHouse 表结构转换为 Protobuf 格式架构。
此函数接收 ClickHouse 表结构定义,并将其转换为 proto3 语法中的协议缓冲区 (Protobuf) 架构定义。 这对于生成与您的 ClickHouse 表结构匹配的 Protobuf 架构以进行数据交换很有用。
语法
参数
structure— ClickHouse 表结构定义,字符串形式(例如“column1 Type1, column2 Type2”)。Stringmessage_name— 生成架构中 Protobuf 消息类型的名称。String
返回值
返回与输入 ClickHouse 结构对应的 proto3 语法 Protobuf 模式定义。 String
示例
将 ClickHouse 结构转换为 Protobuf 模式
tcpPort
引入于:v20.12
返回服务器监听的 本机接口 TCP 端口号。 如果在分布式表的上下文中执行,此函数会生成一个包含与每个分片相关值的普通列。 否则,它会生成一个常量值。
语法
参数
- 无。
返回值
返回 TCP 端口号。 UInt16
示例
使用示例
throwIf
引入于:v1.1
如果参数 x 为 true,则抛出异常。 要使用 error_code 参数,必须启用配置参数 allow_custom_error_code_in_throw。
语法
参数
x— 要检查的条件。Anymessage— 可选。自定义错误消息。const Stringerror_code— 可选。自定义错误代码。const Int8/16/32
返回值
如果条件为 false,则返回 0;如果条件为 true,则抛出异常。 UInt8
示例
使用示例
toColumnTypeName
引入于:v1.1
返回给定值的内部数据类型名称。 与函数 toTypeName 不同,返回的数据类型可能包含像 Const 和 LowCardinality 这样的内部包装列。
语法
参数
value— 返回内部数据类型的值。Any
返回值
返回用于表示该值的内部数据类型。 String
示例
使用示例
toTypeName
引入于:v1.1
返回传递参数的类型名称。 如果传递了 NULL,则该函数返回类型 Nullable(Nothing),这对应于 ClickHouse 的内部 NULL 表示形式。
语法
参数
x— 任意类型的数值。Any
返回值
返回输入值的的数据类型名称。 String
示例
使用示例
transactionID
引入于:v22.6
返回事务的 ID。
语法
参数
- 无。
返回值
返回一个包含 start_csn、local_tid 和 host_id 的元组。
start_csn:全局序列号,该事务开始时看到的最新提交时间戳。local_tid:本地序列号,在特定 start_csn 内,此主机启动的每个事务都是唯一的。host_id:启动此事务的主机的 UUID。Tuple(UInt64, UInt64, UUID)
示例
使用示例
transactionLatestSnapshot
引入于:v22.6
返回可用于读取的 事务 的最新快照(提交序列号)。
语法
参数
- 无。
返回值
返回事务的最新快照 (CSN)。 UInt64
示例
使用示例
transactionOldestSnapshot
引入于:v22.6
返回某些正在运行的 事务 可见的最新快照(提交序列号)。
语法
参数
- 无。
返回值
返回事务的最新快照 (CSN)。 UInt64
示例
使用示例
transform
引入于:v1.1
根据显式定义的某些元素的映射到其他元素的映射来转换值。
此函数有两种变体
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 中对应的元素,否则返回默认值(如果提供)或 x(如果未提供默认值)。 Any
示例
transform(T, Array(T), Array(U), U) -> U
transform(T, Array(T), Array(T)) -> T
uniqThetaIntersect
引入于: v22.9
两个 uniqThetaSketch 对象执行交集计算(集合运算 ∩),结果是一个新的 uniqThetaSketch。
语法
参数
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
返回值
包含交集结果的新 uniqThetaSketch。 UInt64
示例
使用示例
uniqThetaNot
引入于: v22.9
两个 uniqThetaSketch 对象执行 a_not_b 计算(集合运算 ×),结果是一个新的 uniqThetaSketch。
语法
参数
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
返回值
返回包含 a_not_b 结果的新 uniqThetaSketch。 UInt64
示例
使用示例
uniqThetaUnion
引入于: v22.9
两个 uniqThetaSketch 对象执行并集计算(集合运算 ∪),结果是一个新的 uniqThetaSketch。
语法
参数
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
返回值
返回包含并集结果的新 uniqThetaSketch。 UInt64
示例
使用示例
uptime
引入于:v1.1
返回服务器的运行时间(以秒为单位)。 如果在分布式表的上下文中执行,此函数会生成一个包含与每个分片相关值的普通列。 否则,它会生成一个常量值。
语法
参数
- 无。
返回值
返回服务器的运行时间(以秒为单位)。 UInt32
示例
使用示例
variantElement
引入于:v25.2
从 Variant 列中提取具有指定类型的列。
语法
参数
variant— Variant 列。Varianttype_name— 要提取的变体类型名称。Stringdefault_value— 如果变体没有指定类型的变体,则使用的默认值。 可以是任何类型。 可选。Any
返回值
返回从 Variant 列中提取的指定变体类型的列。 Any
示例
使用示例
variantType
引入于:v24.2
返回 Variant 列中每行的变体类型名称。 如果某行包含 NULL,则返回 'None'。
语法
参数
variant— Variant 列。Variant
返回值
返回包含每行变体类型名称的 Enum 列。 Enum
示例
使用示例
version
引入于:v1.1
返回 ClickHouse 的当前版本,格式为字符串:major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release。 如果在分布式表的上下文中执行,此函数会生成一个包含与每个分片相关值的普通列。 否则,它会生成一个常量值。
语法
参数
- 无。
返回值
返回 ClickHouse 的当前版本。 String
示例
使用示例
visibleWidth
引入于:v1.1
计算以文本格式(制表符分隔)输出值时的近似宽度。 此函数由系统用于实现 Pretty 格式。
语法
参数
x— 任何数据类型的数值。Any
返回值
返回以文本格式显示值时的近似宽度。 UInt64
示例
计算 NULL 的可见宽度
zookeeperSessionUptime
引入于:v21.11
返回当前 ZooKeeper 会话的运行时间(以秒为单位)。
语法
参数
- 无。
返回值
返回当前 ZooKeeper 会话的运行时间(以秒为单位)。 UInt32
示例
使用示例