下方的函数文档由
system.functions 系统表自动生成。FQDN
fullHostName
参数
- 无。
String
示例
使用示例
Query
Response
MACNumToString
UInt64 数值按大端格式解释为 MAC 地址。
返回对应的 MAC 地址字符串,格式为 AA:BB:CC:DD:EE:FF (以冒号分隔的十六进制数字) 。
语法
num— UInt64 数字。UInt64
String
示例
使用示例
Query
Response
MACStringToNum
s— MAC 地址字符串。String
UInt64
示例
使用示例
Query
Response
MACStringToOUI
s— MAC 地址字符串。String
UInt64
示例
使用示例
Query
Response
authenticatedUser
authUser
参数
- 无。
String
示例
用法示例
Query
Response
bar
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
- 无。
UInt64
示例
基本用法
Query
Response
blockSerializedSize
x1[, x2, ...]— 任意数量的值,用于获取该值块的未压缩大小。Any
UInt64
示例
用法示例
Query
Response
blockSize
- 无。
UInt64
示例
用法示例
Query
Response
buildId
- 无。
String
示例
使用示例
Query
Response
byteSize
String 参数,该函数返回字符串长度 + 8 (长度) 。
如果函数有多个参数,则会累加它们的字节大小。
Syntax
arg1[, arg2, ...]— 用于估算未压缩字节大小的任意数据类型的值。Any
UInt64
示例
使用示例
Query
Response
Query
Response
catboostEvaluate
- 构建 catboost 评估库
libcatboostmodel.<so|dylib> 库。有关如何编译该库,请参阅 CatBoost documentation。
接下来,在 ClickHouse 配置中指定 libcatboostmodel.<so|dylib> 的路径:
catboostEvaluate() 时,如果库桥接进程尚未运行,服务器会启动该进程。这两个进程
通过 HTTP 接口通信。默认使用端口 9012。也可以按如下方式指定其他端口——如果端口
9012 已分配给其他服务,这样会很有用。
- 使用 libcatboost 训练 catboost 模型
path_to_model— catboost 模型路径。const Stringfeature— 一个或多个模型特征/参数。Float*
Float64
示例
catboostEvaluate
Query
Response
colorOKLABToSRGB
- L:感知亮度 (通常在 [0..1] 范围内)
- a:绿-红对立轴
- b:蓝-黄对立轴
- 从 OKLab 转换为线性 sRGB。 2) 从线性 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
L 超出范围 [0...1]、C 为负数,或 H 超出范围 [0...360],则结果由具体实现决定。
OKLCH 是 OKLab 色彩空间的柱面坐标版本。
它的三个坐标分别是
L (范围为 [0...1] 的明度) 、C (色度 >= 0) 和 H (以度为单位的色相,范围为 [0...360]) 。
OKLab/OKLCH 的设计目标是在保持较低计算开销的同时实现感知均匀。colorSRGBToOKLCH 的逆过程:
- OKLCH 到 OKLab。 2) OKLab 到 Linear sRGB 3) 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
[0...255],或 gamma 值非正,则其行为由具体实现决定。
OKLAB 是一种感知均匀的色彩空间。
它的三个坐标分别是
L (范围为 [0...1] 的明度) 、a(绿色-红色轴) 和 b(蓝色-黄色轴)。
OKLab 旨在实现感知均匀,同时保持较低的计算成本。- 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.2。Float64
(L, a, b)。Tuple(Float64, Float64, Float64)
示例
将 sRGB 转换为 OKLAB
Query
Response
colorSRGBToOKLCH
[0...255],或者 gamma 值为非正数,则其行为由具体实现决定。
OKLCH 是 OKLab 色彩空间的圆柱形式。
它有三个坐标:
L (范围为 [0...1] 的明度) 、C (色度 >= 0) 和 H (范围为 [0...360]、以度为单位的色相) 。
OKLab/OKLCH 旨在实现感知均匀,同时保持较低的计算开销。- sRGB 到 Linear sRGB 2) Linear sRGB 到 OKLab 3) 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
CONNECTION_ID 函数。
它通常不用于生产环境中的查询。
语法
- 无。
UInt64
示例
使用示例
Query
Response
countDigits
此函数会考虑十进制值的标度,也就是说,它是基于底层整数类型
(value * scale) 来计算结果的。例如:countDigits(42) = 2countDigits(42.000) = 5countDigits(0.04200) = 4
x 所需的位数。UInt8
示例
使用示例
Query
Response
currentDatabase
CREATE TABLE 查询表引擎参数中,此函数非常有用。
另请参阅 SET 语句。
语法
current_database, SCHEMA, DATABASE
参数
- 无。
String
示例
用法示例
Query
Response
Query
Response
currentProfiles
- 无。
Array(String)
示例
用法示例
Query
Response
currentQueryID
current_query_id
参数
- 无。
Query
Response
currentRoles
- 无。
Array(String)
示例
使用示例
Query
Response
currentSchemas
currentDatabase 相同,但
- 接受一个会被忽略的布尔参数
- 以仅包含单个值的数组形式返回数据库名称。
currentSchemas 仅为兼容 PostgreSQL 而存在。
请改用 currentDatabase。
另请参见 SET 语句。
语法
current_schemas
参数
bool— 一个布尔值,会被忽略。Bool
Array(String)
示例
用法示例
Query
Response
currentUser
session_user, user, current_user
参数
- 无。
String
示例
使用示例
Query
Response
Query
Response
defaultProfiles
- 无。
Array(String)
示例
使用示例
Query
Response
defaultRoles
- 无。
Array(String)
示例
使用示例
Query
Response
defaultValueOfArgumentType
expression— 任意类型的值,或结果为任意类型值的表达式。Any
0,对 String 返回空字符串,对 Nullable 类型返回 NULL。UInt8 或 String 或 NULL
示例
使用示例
Query
Response
Query
Response
defaultValueOfTypeName
type— 表示类型名称的字符串。String
0,字符串类型返回空字符串,而 Nullable UInt8、String 或 NULL 则返回 NULL
示例
使用示例
Query
Response
Query
Response
displayName
display_name 的值;如果未设置,则返回服务器的完全限定域名 (FQDN) 。
语法
- 无。
display_name 的值;如果未设置,则返回服务器的 FQDN。String
示例
使用示例
Query
Response
dumpColumnStructure
x— 要获取其描述信息的值。Any
String
示例
用法示例
Query
Response
enabledProfiles
- 无。
Array(String)
示例
使用示例
Query
Response
enabledRoles
- 无。
Array(String)
示例
使用示例
Query
Response
errorCodeToName
error_code 的文本名称。String
示例
用法示例
Query
Response
file
file 表函数。
语法
path— 相对于user_files_path的文件路径。支持通配符*、**、?、{abc,def}和{N..M},其中N、M为数字,'abc'、'def'为字符串。Stringdefault— 如果文件不存在或无法访问,则返回该值。String或NULL
String
示例
将文件插入表中
Query
Response
filesystemAvailable
filesystemUnreserved) ,因为其中一部分空间会保留给操作系统。
语法
disk_name— 可选。要查询其剩余可用空间的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
使用示例
Query
Response
filesystemCapacity
disk_name— 可选。要获取容量的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
用法示例
Query
Response
filesystemUnreserved
filesystemFree) 。
另请参见 filesystemAvailable。
语法
disk_name— 可选。要查询其可用空间总量的磁盘名称。若省略,则使用默认磁盘。String或FixedString
UInt64
示例
使用示例
Query
Response
finalizeAggregation
state— 聚合状态。AggregateFunction
Any
示例
使用示例
Query
Response
Query
Response
flipCoordinates
geometry— 要转换的几何图形。支持的类型:Point (Tuple(Float64, Float64))、Ring (Array(Point))、Polygon (Array(Ring))、MultiPolygon (Array(Polygon))、LineString (Array(Point))、MultiLineString (Array(LineString)) 或 Geometry (可包含上述任一类型的 Variant) 。
Point 或 Ring 或 Polygon 或 MultiPolygon 或 LineString 或 MultiLineString 或 Geometry
示例
basic_point
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
formatQuery
query— 要进行格式化的 SQL 查询。String
String
示例
多行
Query
Response
formatQueryOrNull
query— 要格式化的 SQL 查询。String
String
示例
多行
Query
Response
formatQuerySingleLine
query— 待格式化的 SQL 查询。String
String
示例
多行
Query
Response
formatQuerySingleLineOrNull
query— 要格式化的 SQL 查询。String
String
示例
多行
Query
Response
formatReadableDecimalSize
parseReadableSize。
语法
value— 以字节为单位的大小。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalprecision— 可选。小数点后的位数。默认值为 2。const UInt8
String
示例
格式化文件大小
Query
Response
Query
Response
formatReadableQuantity
Float64。
对于较大的值,结果可能不够理想。
语法
value— 要格式化的数值。Int8或Int16或Int32或Int64或UInt8或UInt16或UInt32或UInt64或Float32或Float64或Decimalprecision— 可选。小数点后的位数。默认为 2。const UInt8
String
示例
使用后缀格式化数值
Query
Response
Query
Response
formatReadableSize
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
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
allow_fuzz_query_functions = 1。
语法
query— 要进行模糊测试的 SQL 查询。String
String
示例
基本示例
Query
Response
generateRandomStructure
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
series_keeper_path 中配置。
语法
series_identifier— 序列标识符const Stringstart_value— 可选。计数器的起始值,默认为 0。注意:此值仅在创建新序列时使用;如果该序列已存在,则会被忽略UInt*
UInt64
示例
首次调用
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
getClientHTTPHeader
Authentication 和 X-ClickHouse-*) 会受到限制。
需要启用设置
allow_get_client_http_header该函数要求启用设置 allow_get_client_http_header。
出于安全原因,此设置默认未启用,因为某些请求头 (如 Cookie) 可能包含敏感信息。name— HTTP 请求头的名称。String
String
示例
使用示例
Query
Response
getMacro
<macros> 部分中定义,即使服务器的主机名很复杂,也可以使用便于识别的名称来区分服务器。
如果该函数是在分布式表的上下文中执行的,它会生成一个普通列,其中的值与各个分片相关。
语法
name— 要获取的 macro 名称。const String
String
示例
基本用法
Query
Response
getMaxTableNameLengthForDatabase
database_name— 指定数据库的名称。String
Query
Response
getMergeTreeSetting
setting_name— 设置名称。String
Query
Response
getOSKernelVersion
- 无。
String
示例
使用示例
Query
Response
getServerPort
port_name— 端口名称。String
UInt16
示例
用法示例
Query
Response
getServerSetting
setting_name— 服务器设置的名称。String
Any
示例
用法示例
Query
Response
getSetting
setting_Name— 设置名。const String
Any
示例
使用示例
Query
Response
getSettingOrDefault
setting_name— 设置名称。Stringdefault_value— 若未设置 custom_setting,则返回该值。该值可以是任意数据类型,也可以为 NULL。
default_value。
示例
使用示例
Query
Response
getSizeOfEnumType
Enum 的字段数量。
语法
x— 类型为Enum的值。Enum
Enum 的字段个数。UInt8/16
示例
使用示例
Query
Response
getSubcolumn
- 无。
Query
Response
getTypeSerializationStreams
col— 用于检测数据类型的列,或数据类型的字符串表示形式。Any
Array(String)
示例
tuple
Query
Response
Query
Response
globalVariable
name— 全局变量名。String
name 的值。Any
示例
globalVariable
Query
Response
hasColumnInTable
0。
语法
database— 数据库名称。const Stringtable— 表名称。const Stringcolumn— 列名称。const Stringhostname— 可选。要执行检查的远程服务器名称。const Stringusername— 可选。远程服务器的用户名。const Stringpassword— 可选。远程服务器的密码。const String
1,否则返回 0。UInt8
示例
检查现有列
Query
Response
Query
Response
hasThreadFuzzer
- 无。
UInt8
示例
检查 Thread Fuzzer 的状态
Query
Response
highlightQuery
query— ClickHouse SQL 查询字符串。String。
(begin UInt64, end UInt64, type Enum8(...)) 组成的数组,表示高亮范围。Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
示例
简单
Query
Response
hostName
hostname
参数
- 无。
String
示例
用法示例
Query
Response
icebergBucket
N— 桶的数量,即取模值。const (U)Int*value— 要转换的源值。(U)Int*或Bool或Decimal或Float*或String或FixedString或UUID或Date或Time或DateTime
Int32
示例
示例
Query
Response
icebergTruncate
Query
Response
identity
x— 输入值。Any
Any
示例
用法示例
Query
Response
ignore
0。
语法
x— 一个未使用的输入值,传入它仅仅是为了避免语法错误。Any
0。UInt8
示例
用法示例
Query
Response
indexHint
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
system.query_log 的 initial_query_id 字段中提取。
与 queryID 函数不同,initialQueryID 在不同分片上返回相同的结果。
语法
initial_query_id
参数
- 无。
String
示例
使用示例
Query
Response
initialQueryStartTime
initialQueryStartTime 在不同分片上返回相同的结果。
语法
initial_query_start_time
参数
- 无。
DateTime
示例
用法示例
Query
Response
initializeAggregation
AggregateFunction 的列中,或者将已初始化的聚合结果用作默认值。
语法
initializeAggregation 的第一个参数指定的函数返回类型相同。Any
示例
uniqState 的基本用法
Query
Response
Query
Response
isConstant
x— 要检查的表达式。Any
x 是常量,则返回 1;如果 x 不是常量,则返回 0。UInt8
示例
常量表达式
Query
Response
Query
Response
Query
Response
Query
Response
isDecimalOverflow
1;如果 Decimal 值符合指定精度,则返回 0。UInt8
示例
使用示例
Query
Response
joinGet
仅支持使用
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
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
col— 一个低基数列。LowCardinality
UInt64
示例
用法示例
Query
Response
lowCardinalityKeys
col— 低基数列。LowCardinality
UInt64
示例
lowCardinalityKeys
Query
Response
materialize
x— 常量。Any
Any
示例
用法示例
Query
Response
minSampleSizeContinuous
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
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
allow_deprecated_error_prone_window_functions = 1 启用此函数。
语法
column— 源列。Anyoffset— 相对于当前行的偏移量。正值向前查找,负值向后查找。Integerdefault_value— 可选。如果偏移量超出数据范围,则返回该值。若未指定,则使用该列类型的默认值。Any
Any
示例
用法示例
Query
Response
Query
Response
normalizeQuery
?。
语法
x— 字符序列。String
String
示例
使用示例
Query
Response
normalizeQueryKeepNames
?,但不会替换复杂别名 (包含空白字符、超过两位数字,或长度至少为 36 字节,例如 UUIDs) 。
这有助于更好地分析复杂的查询日志。
语法
x— 字符序列。String
String
示例
使用示例
Query
Response
normalizedQueryHash
x— 字符序列。String
UInt64
示例
使用示例
Query
Response
normalizedQueryHashKeepNames
normalizedQueryHash 类似,它会为相似查询返回相同的 64 位哈希值,且不包含字面量的值;但不同的是,它不会在哈希计算前将复杂别名 (包含空白字符、超过两个数字,或长度至少为 36 字节,例如 UUIDs) 替换为占位符。
这有助于分析查询日志。
语法
x— 字符序列。String
UInt64
示例
用法示例
Query
Response
obfuscateQuery
tag 参数可防止在同一函数调用
在一个查询中被多次使用时发生 common subexpression elimination。这样可确保每次调用都会生成不同的混淆结果。
特性:
- 将表名、列名和别名替换为随机词
- 将数字和字符串字面量替换为随机值
- 保留整体查询结构和 SQL 语法
- 对不同的行生成不同的结果
query— 要混淆处理的 SQL 查询。Stringtag— 可选。一个值,用于在多次使用相同函数调用时防止公共子表达式消除。
String
示例
基本用法
Query
Response
Query
Response
Query
Response
obfuscateQueryWithSeed
obfuscateQuery() 不同,此函数在给定相同 seed 时会产生确定性的结果。
当你需要在多次运行之间保持混淆结果一致,或希望
为测试或调试复现相同的混淆查询时,这个函数非常有用。
特性:
- 基于提供的 seed 进行确定性混淆
- 相同的 seed 始终会产生相同的混淆结果
- 不同的 seed 会产生不同的结果
- 与 obfuscateQuery() 一样保留查询结构
- 可复现的测试用例
- 在多次运行之间保持一致的匿名化
- 使用一致的混淆查询进行调试
String
示例
使用整数种子进行确定性混淆
Query
Response
Query
Response
Query
Response
parseReadableSize
B、KiB、KB、MiB、MB 等为单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,此函数返回对应的字节数。
如果函数无法解析输入值,则会抛出异常。
此函数的逆向操作是 formatReadableSize 和 formatReadableDecimalSize。
语法
x— 使用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小。String
UInt64
示例
使用示例
Query
Response
parseReadableSizeOrNull
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
B、KiB、KB、MiB、MB 等单位的字符串 (即 ISO/IEC 80000-13 或十进制字节单位) ,该函数返回对应的字节数。
如果该函数无法解析输入值,则返回 0。
该函数的逆操作为 formatReadableSize 和 formatReadableDecimalSize。
Syntax
x— 采用 ISO/IEC 80000-13 或十进制字节单位表示的可读大小值。String
0。UInt64
示例
使用示例
Query
Response
parseTimeDelta
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
此函数较慢,不应在大量行上调用。
partitionID
参数
column1, column2, ...— 要返回其分区 ID 的列。
String
示例
用法示例
Query
Response
queryID
system.query_log 表中的 query_id 字段提取。
与 initialQueryID 函数不同,queryID 在不同分片上可能返回不同的结果。
语法
query_id
参数
- 无。
String
示例
使用示例
Query
Response
revision
- 无。
UInt32
示例
使用示例
Query
Response
rowNumberInAllBlocks
- 无。
0 开始。UInt64
示例
用法示例
Query
Response
rowNumberInBlock
rowNumberInBlock 处理的每个块,返回当前行的编号。
返回的编号在每个块内都从 0 开始。
语法
- 无。
0 开始。UInt64
示例
用法示例
Query
Response
runningAccumulate
agg_state— 聚合函数状态。AggregateFunctiongrouping— 可选。分组键。如果grouping的值发生变化,函数状态将被重置。它可以是任意一种定义了相等运算符的受支持数据类型。Any
Any
示例
使用 initializeAggregation 的使用示例
Query
Response
runningConcurrency
start— 事件开始时间所在的列。Date或DateTime或DateTime64end— 事件结束时间所在的列。Date或DateTime或DateTime64
UInt32
示例
用法示例
Query
Response
runningDifference
0,后续各行返回与前一行的差值。
函数的结果取决于受影响的数据块以及块内数据的顺序。
计算 runningDifference() 时的行顺序可能与最终返回给用户的行顺序不同。
为避免这种情况,你可以创建一个带有 ORDER BY 的子查询,并在子查询外部调用该函数。
请注意,块大小会影响结果。
runningDifference 的内部状态会在每个新块开始时重置。
语法
x— 要计算逐行差分的列。Any
Query
Response
Query
Response
runningDifferenceStartingWithFirstValue
runningDifference 不同,它返回的是第一行的实际值,而不是 0。
语法
x— 用于计算逐行差分的列。Any
Any
示例
使用示例
Query
Response
serverUUID
- 无。
UUID
示例
使用示例
Query
Response
0。
语法
- 无。
0。UInt32
示例
用法示例
Query
Response
1 开始。
如果查询不是分布式查询,则返回常量值 0。
语法
- 无。
0。UInt32
示例
使用示例
Query
Response
showCertificate
- 无。
Map(String, String)
示例
使用示例
Query
Response
sleep
sleep() 函数,因为它可能会对查询性能和系统响应速度产生负面影响。
不过,在以下场景中它可能会很有用:
- 测试:在测试或对 ClickHouse 进行基准测试时,你可能希望模拟延迟或引入暂停,以观察系统在特定条件下的表现。
- 调试:如果你需要在某个特定时间点检查系统状态或查询执行情况,可以使用
sleep()引入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,你可能希望模拟真实场景中的延迟或暂停,例如网络延迟或对外部系统的依赖。
allow_sleep) 。
语法
seconds— 暂停查询执行的秒数,最长为 3 秒。可使用浮点数来指定小数秒。const UInt*或const Float*
0。UInt8
示例
使用示例
Query
Response
sleepEachRow
sleepEachRow() 函数主要用于测试和调试,类似于 sleep() 函数。
它可以在处理每一行时模拟延迟或插入暂停,这在以下场景中很有用:
- 测试:在特定条件下测试或对 ClickHouse 进行基准测试时,可以使用
sleepEachRow()为处理的每一行模拟延迟或插入暂停。 - 调试:如果你需要针对处理的每一行检查系统状态或查询执行情况,可以使用
sleepEachRow()插入暂停,以便检查或收集相关信息。 - 模拟:在某些情况下,你可能希望模拟真实场景中每处理一行都会发生延迟或暂停的情况,例如与外部系统交互或遇到网络延迟时。
seconds— 结果集中的每一行在查询执行时暂停的秒数,最长为 3 秒。可以使用浮点值来指定秒的小数部分。const UInt*或const Float*
0。UInt8
示例
用法示例
Query
Response
structureToCapnProtoSchema
- 无。
Query
Response
structureToProtobufSchema
structure— 以字符串形式表示的 ClickHouse 表结构定义 (例如:‘column1 Type1, column2 Type2’) 。Stringmessage_name— 生成的 schema 中的 Protobuf 消息类型名称。String
String
示例
将 ClickHouse 结构转换为 Protobuf schema
Query
Response
tcpPort
- 无。
UInt16
示例
使用示例
Query
Response
throwIf
error_code 参数,必须启用配置参数 allow_custom_error_code_in_throw。
语法
x— 要检查的条件。Anymessage— 可选。自定义错误信息。const Stringerror_code— 可选。自定义错误代码。const Int8/16/32
false,则返回 0;如果条件为 true,则抛出异常。UInt8
示例
用法示例
Query
Response
toColumnTypeName
toTypeName 不同,返回的数据类型可能包含内部包装列,如 Const 和 LowCardinality。
语法
value— 要返回其内部数据类型名称的值。Any
String
示例
使用示例
Query
Response
toTypeName
NULL,该函数会返回类型 Nullable(Nothing),对应于 ClickHouse 内部对 NULL 的表示。
语法
x— 任意类型的值。Any
String
示例
使用示例
Query
Response
tokenizeQuery
query— 一个 ClickHouse SQL 查询字符串。String。
(begin UInt64, end UInt64, type Enum8(...)),表示该查询的各个标记。Array(Tuple(begin UInt64, end UInt64, type Enum8(...)))
示例
simple
Query
Response
transactionID
语法
- 无。
start_csn、local_tid 和 host_id 组成的 Tuple。
start_csn:全局顺序号,即该事务开始时看到的最新提交时间戳。local_tid:本地顺序号,对于该主机在特定 start_csn 下启动的每个事务都是唯一的。host_id:启动该事务的主机 UUID。Tuple(UInt64, UInt64, UUID)
Query
Response
transactionLatestSnapshot
语法
- 无。
UInt64
示例
使用示例
Query
Response
transactionOldestSnapshot
语法
- 无。
UInt64
示例
用法示例
Query
Response
transform
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
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
使用示例
Query
Response
uniqThetaNot
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
用法示例
Query
Response
uniqThetaUnion
uniqThetaSketch— uniqThetaSketch 对象。Tuple或Array或Date或DateTime或String或(U)Int*或Float*或Decimal
UInt64
示例
用法示例
Query
Response
运行时间
- 无。
UInt32
示例
使用示例
Query
Response
variantElement
Variant 列中提取指定类型的列。
语法
variant— Variant 列。Varianttype_name— 要提取的 Variant 类型名称。Stringdefault_value— 如果variant中不存在指定的 Variant 类型,则使用该默认值。可以是任意类型。可选。Any
Any
示例
使用示例
Query
Response
variantType
Variant 列中每一行的 Variant 类型名称。如果该行为 NULL,则返回 ‘None’。
语法
variant— Variant 列。Variant
Enum
示例
用法示例
Query
Response
version
major_version.minor_version.patch_version.number_of_commits_since_the_previous_stable_release。
如果在分布式表的上下文中执行,此函数会生成一个普通列,其值对应各个分片。
否则,它会生成一个常量值。
语法
- 无。
String
示例
用法示例
Query
Response
visibleWidth
NULL 表示为与 NULL 对应的字符串。
语法
x— 任意数据类型的值。Any
UInt64
示例
计算 NULL 的可见宽度
Query
Response
zookeeperSessionUptime
- 无。
UInt32
示例
使用示例
Query
Response