array
emptyArray* 函数。
[ ] 运算符可实现相同功能。
Syntax
x1— 任意类型 T 的常量值。如果只提供这一个参数,数组的类型将为 T。-[, x2, ..., xN]— 另外 N 个与x1具有相同共同超类型的常量值
Array(T)
示例
有效用法
Query
Response
Query
Response
arrayAUCPR
arrayPRAUC
参数
cores— 预测模型给出的评分。Array((U)Int*)或Array(Float*)labels— 样本标签,通常正样本为 1,负样本为 0。Array((U)Int*)或Array(Enum)partial_offsets—- 可选。一个由三个非负整数组成的
Array(T),用于计算 PR 曲线下的部分面积 (相当于 PR 空间中的一个垂直带) ,而非整个 AUC。此选项对于分布式计算 PR AUC 很有帮助。该数组必须包含以下元素 [higher_partitions_tp,higher_partitions_fp,total_positives]。higher_partitions_tp: 更高评分分区中的正标签数量。higher_partitions_fp: 更高评分分区中的负标签数量。total_positives: 整个数据集中的正样本总数。
当使用
arr_partial_offsets 时,arr_scores 和 arr_labels 应仅包含整个数据集中的一个分区,即某个分数区间内的数据。
数据集应划分为连续的分区,其中每个分区都包含评分落在特定范围内的数据子集。
例如:- 一个分区可以包含范围 [0, 0.5) 内的所有评分。
- 另一个分区可以包含范围 [0.5, 1.0] 内的评分。
Float64
示例
使用示例
Query
Response
arrayAll
func(x [, y1, y2, ... yN]) 对所有元素都返回 true,则返回 1;否则返回 0。
语法
func(x[, y1, ..., yN])— 作用于源数组 (x) 和条件数组 (y) 元素的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)cond1_arr, ...— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
true,则返回 1;否则返回 0。UInt8
示例
所有元素均匹配
Query
Response
Query
Response
arrayAutocorrelation
max_lag,则仅计算 [0, max_lag) 范围内各个滞后值的相关性。
如果未提供 max_lag,则计算所有可能滞后值的相关性。
语法
Float64 数组。如果方差为 0,则返回 NaN。Array(Float64)
示例
线性
Query
Response
Query
Response
Query
Response
Query
Response
arrayAvg
func,则返回 lambda 结果元素的平均值。
语法
func(x[, y1, ..., yN])— 可选。对源数组 (x) 和条件数组 (y) 中的元素执行操作的 Lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 Lambda 函数提供额外参数。Array(T)
Float64
示例
基本示例
Query
Response
Query
Response
arrayCompact
null 值。结果数组中各值的顺序取决于它们在源数组中的顺序。
语法
arr— 用于去重的数组。Array(T)
Array(T)
示例
用法示例
Query
Response
arrayConcat
arr1 [, arr2, ... , arrN]— 要拼接的 N 个数组。Array(T)
Array(T)
示例
用法示例
Query
Response
arrayCount
func(arr1[i], ..., arrN[i]) 的结果为 true 的元素个数。
如果未指定 func,则返回数组中非零元素的个数。
arrayCount 是一个高阶函数。
语法
func 返回 true 的元素个数。否则,返回数组中非零元素的个数。UInt32
示例
使用示例
Query
Response
arrayCumSum
func— 可选。应用于数组各位置元素的 Lambda 函数。Lambda functionarr1— 由数值组成的源数组。Array(T)[arr2, ..., arrN]— 可选。其他大小相同的数组;如果指定了 Lambda 函数,则会作为参数传递给它。Array(T)
Array(T)
示例
基本用法
Query
Response
Query
Response
arrayCumSumNonNegative
func— 可选。一个 Lambda 函数,用于对每个位置上的数组元素进行处理。Lambda functionarr1— 由数值组成的源数组。Array(T)[arr2, ..., arrN]— 可选。其他大小相同的数组;如果指定了 Lambda 函数,这些数组会作为参数传递给该函数。Array(T)
Array(T)
示例
基本用法
Query
Response
Query
Response
arrayDifference
arr[1] - arr[0],第三个为 arr[2] - arr[1],以此类推。
结果数组中元素的类型由减法的类型推断规则决定 (例如 UInt8 - UInt8 = Int16) 。
语法
arr— 用于计算相邻元素差值的数组。Array(T)
UInt*
示例
用法示例
Query
Response
Query
Response
arrayDistinct
arr— 要提取其中不同元素的数组。Array(T)
Array(T)
示例
使用示例
Query
Response
arrayDotProduct
两个向量的长度必须相等。数组和 Tuple 也可以包含混合的元素类型。
v1— 第一个向量。Array((U)Int* | Float* | Decimal)或Tuple((U)Int* | Float* | Decimal)v2— 第二个向量。Array((U)Int* | Float* | Decimal)或Tuple((U)Int* | Float* | Decimal)
返回类型由参数类型决定。如果 Array 或 Tuple 包含混合的元素类型,则结果类型为 supertype。
(U)Int* 或 Float* 或 Decimal
示例
Array 示例
Query
Response
Query
Response
arrayElement
n 的元素,其中 n 可以是任意整数类型。
如果索引超出数组范围,则返回默认值 (数值类型返回 0,String 返回空字符串等) ,
但非常量数组参数且索引为常量 0 的情况除外。在这种情况下,会报错 Array indices are 1-based。
ClickHouse 中的数组从 1 开始索引。
arr[-1] 表示数组中的最后一个元素。
运算符 [n] 提供相同的功能。
语法
Array(T)
示例
使用示例
Query
Response
Query
Response
Query
Response
Query
Response
arrayElementOrNull
n 的元素,其中 n 可以是任意整数类型。
如果索引超出数组范围,则返回 NULL,而不是默认值。
ClickHouse 中的数组从 1 开始索引。
arr[-1] 表示数组中的最后一个元素。
语法
arrays— 任意数量的数组参数。Array
Array(T)
示例
用法示例
Query
Response
Query
Response
Query
Response
arrayEnumerate
[1, 2, 3, ..., length (arr)]
此函数通常与 ARRAY JOIN 子句配合使用。它可以在应用 ARRAY JOIN 后,
对每个数组中的某项内容只统计一次。
此函数也可用于高阶函数。例如,可以用它获取满足条件的元素的数组索引。
语法
arr— 要进行枚举的数组。Array
[1, 2, 3, ..., length (arr)]。Array(UInt32)
示例
使用 ARRAY JOIN 的基础示例
Query
Response
arrayEnumerateDense
arr— 要进行枚举的数组。Array(T)
arr 大小相同的数组,表示每个元素在源数组中首次出现的位置。Array(T)
示例
用法示例
Query
Response
arrayEnumerateDenseRanked
clear_depth— 在指定层级对元素分别进行枚举。必须小于或等于max_arr_depth。UInt*arr— 要枚举的 N 维数组。Array(T)max_array_depth— 最大有效深度。必须小于或等于arr的深度。UInt*
Array
示例
基本用法
Query
Response
Query
Response
Query
Response
arrayEnumerateUniq
ARRAY JOIN 和数组元素聚合使用时非常有用。
该函数可以接受多个大小相同的数组作为参数。在这种情况下,唯一性是根据所有数组中相同位置元素组成的 Tuple 来判定的。
语法
arr1— 要处理的第一个数组。Array(T)arr2, ...— 可选。其他大小相同的数组,用于确定 Tuple 的唯一性。Array(UInt32)
Array(T)
示例
基本用法
Query
Response
Query
Response
Query
Response
arrayEnumerateUniqRanked
clear_depth— 在指定层级分别对元素进行枚举。取值为小于或等于max_arr_depth的正整数。UInt*arr— 要枚举的 N 维数组。Array(T)max_array_depth— 最大有效深度。取值为小于或等于arr深度的正整数。UInt*
arr 大小相同的 N 维数组,其中每个元素表示该元素在其他相同值元素中的位置。Array(T)
示例
示例 1
Query
Response
Query
Response
Query
Response
Query
Response
arrayExcept
source 中存在但 except 中不存在的元素,并保留原有顺序。
此函数对两个数组执行集合差集运算。对于 source 中的每个元素,它会检查该元素是否存在于 except 中 (使用精确比较) 。如果不存在,则将该元素包含在结果中。
该运算具有以下特性:
- 保留
source中元素的顺序 - 如果
source中的重复元素不在except中,则会保留 - NULL 会作为单独的值处理
source 中未在 except 中出现的元素。 Array(T)
示例
基本用法
Query
Response
Query
Response
Query
Response
Query
Response
arrayExists
func(x[, y1, y2, ... yN]) 返回 true,则返回 1;否则返回 0。
语法
func(x[, y1, ..., yN])— 一个 Lambda 函数,对源数组 (x) 和条件数组 (y) 中的元素进行操作。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 Lambda 函数提供附加参数。Array(T)
true,则返回 1;否则返回 0 UInt8
示例
使用示例
Query
Response
arrayFill
arrayFill 函数会按顺序处理源数组,从第一个元素一直到最后一个元素,在每个位置使用源数组和条件数组中的元素计算 lambda 条件。当 Lambda 函数 在位置 i 的计算结果为 false 时,该函数会将该元素替换为数组当前状态下位置 i-1 的元素。无论条件如何,第一个元素始终会被保留。
语法
func(x [, y1, ..., yN])— 一个 lambda 函数func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN]),用于对源数组 (x) 和条件数组 (y) 中的元素进行处理。Lambda functionsource_arr— 要处理的源数组。Lambda function[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
Array(T)
示例
单个数组示例
Query
Response
Query
Response
arrayFilter
func(x[, y1, ..., yN])— 对源数组 (x) 和条件数组 (y) 中的元素执行操作的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
Array(T)
示例
示例 1
Query
Response
Query
Response
arrayFirst
func(x[, y1, y2, ... yN]) 返回 true 的元素;否则返回默认值。
语法
func(x[, y1, ..., yN])— 一个 Lambda 函数,用于处理源数组 (x) 和条件数组 (y) 中的元素。Lambda 函数。 -source_arr— 要处理的源数组。Array(T)。 -[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 Lambda 函数 提供额外参数。Array(T)。
λ 为 true 的元素;否则返回 T 的默认值。
示例
使用示例
Query
Response
Query
Response
arrayFirstIndex
func(x[, y1, y2, ... yN]) 返回 true 的元素索引;否则返回 ‘0’。
语法
func(x[, y1, ..., yN])— 对源数组 (x) 和条件数组 (y) 中的元素执行操作的 lambda 函数。Lambda 函数。 -source_arr— 要处理的源数组。Array(T)。 -[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)。
func 为 true 的元素的索引,否则返回 0 UInt32
示例
使用示例
Query
Response
Query
Response
arrayFirstOrNull
func(x[, y1, y2, ... yN]) 返回 true 的元素;否则返回 NULL。
语法
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中的元素进行操作的 Lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 Lambda 函数提供额外参数。Array(T)
func 结果为 true 的元素;否则返回 NULL。
示例
使用示例
Query
Response
Query
Response
arrayFlatten
- 适用于任意深度的嵌套数组。
- 不会更改已经是扁平结构的数组。
flatten
参数
arr— 多维数组。Array(Array(T))
Array(T)
示例
使用示例
Query
Response
arrayFold
λ(x, x1 [, x2, x3, ... xN])— 一个 Lambda 函数λ(acc, x1 [, x2, x3, ... xN]) → F(acc, x1 [, x2, x3, ... xN]),其中F是应用于acc和来自x的数组值的操作,并会重复使用acc的结果。Lambda functionarr1 [, arr2, arr3, ... arrN]— 要操作的 N 个数组。Array(T)acc— 累加器值,其类型与 Lambda 函数的返回类型相同。
acc 值。
示例
使用示例
Query
Response
Query
Response
Query
Response
arrayIntersect
arrN— 用于构造新数组的 N 个数组。Array(T)。
Array(T)
示例
使用示例
Query
Response
arrayJaccardIndex
arr_x 和 arr_y 的 Jaccard 指数。Float64
示例
使用示例
Query
Response
arrayJoin
arrayJoin 函数会接收一行中包含的数组并将其展开,生成多行——数组中的每个元素对应一行。
这与 ClickHouse 中的常规函数不同:常规函数是在同一行内将输入值映射为输出值,
而聚合函数则接收一组行,并将其“压缩”或“归约”为单个汇总行
(如果与 GROUP BY 一起使用,则为汇总行中的单个值) 。
各列中的所有值都会被直接复制,但应用此函数的那一列除外;
该列中的值会被替换为对应的数组元素值。
语法
unnest
参数
arr— 要展开的数组。Array(T)
arr 展开得到的一组行。
示例
基本用法
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayLast
func(x [, y1, y2, ... yN]) 返回 true 的元素;否则返回默认值。
语法
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中的元素进行处理的 lambda 函数。Lambda 函数。 -source— 要处理的源数组。Array(T)。 -[, cond1, ... , condN]— 可选。N 个条件数组,用于为 lambda 函数提供额外参数。Array(T)。
func 返回 true 的元素;否则返回 T 的默认值。
示例
使用示例
Query
Response
Query
Response
arrayLastIndex
func(x[, y1, y2, ... yN]) 返回 true 的元素索引;否则返回 ‘0’。
语法
func(x[, y1, ..., yN])— 对源数组 (x) 和条件数组 (y) 中的元素进行处理的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
func 为 true 的元素的索引;否则返回 0。UInt32
示例
用法示例
Query
Response
Query
Response
arrayLastOrNull
func(x [, y1, y2, ... yN]) 返回 true 的元素;否则返回 NULL。
语法
func(x [, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中的元素进行处理的 lambda 函数。Lambda 函数。 -source_arr— 要处理的源数组。Array(T)。 -[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,用于为 lambda 函数提供额外参数。Array(T)。
λ 不为 true 的元素,否则返回 NULL。
示例
用法示例
Query
Response
Query
Response
arrayLevenshteinDistance
Float64
示例
用法示例
Query
Response
arrayLevenshteinDistanceWeighted
from— 第一个数组。Array(T)。 -to— 第二个数组。Array(T)。 -from_weights— 第一个数组中各元素的权重。Array((U)Int*|Float*)to_weights— 第二个数组中各元素的权重。Array((U)Int*|Float*)
Float64
示例
使用示例
Query
Response
arrayMap
Array(T)
示例
使用示例
Query
Response
Query
Response
arrayMax
func,则返回 lambda 计算结果中的最大元素。
语法
func(x[, y1, ..., yN])— 可选。对源数组 (x) 和条件数组 (y) 中的元素进行处理的 Lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 Lambda 函数提供额外参数。Array(T)
Query
Response
Query
Response
arrayMin
func,则返回 lambda 计算结果中的最小元素。
语法
func(x[, y1, ..., yN])— 可选。一个作用于源数组 (x) 和条件数组 (y) 元素的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)cond1_arr, ...— 可选。N 个条件数组,用于为 lambda 函数提供额外参数。Array(T)
Query
Response
Query
Response
arrayNormalizedGini
Tuple(Float64, Float64, Float64)
示例
使用示例
Query
Response
arrayPartialReverseSort
arrayReverseSort 相同,但额外提供了一个 limit 参数,以支持部分排序。
语法
f(arr[, arr1, ... ,arrN])— 应用于数组arr元素的 lambda 函数。Lambda functionarr— 要排序的数组。Array(T)arr1, ... ,arrN— 当f接受多个参数时,额外的 N 个数组。Array(T)limit— 排序进行到的索引位置。(U)Int*
[1..limit] 范围内的元素按降序排序,
其余元素 (limit..N] 的顺序未指定。
示例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialShuffle
[1..limit] 范围内的元素是原始数组中的一个随机
子集。其余的 (limit..n] 部分包含不在 [1..limit] 范围内的元素,顺序未定义。
limit 的取值应在 [1..n] 范围内。超出该范围的值等同于执行完整的 arrayShuffle:
此函数不会将常量物化。
limit 的取值应在 [1..N] 范围内。超出该范围的值等同于执行完整的 arrayShuffle。arr— 要随机打乱的数组。Array(T)seed— 可选。用于生成随机数的种子。如果未提供,则使用随机种子。(U)Int*limit— 可选。限制元素交换次数的数值,取值范围为[1..N]。(U)Int*
Array(T)
示例
no_limit1
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPartialSort
arraySort 相同,但额外提供了 limit 参数,可进行部分排序。
语法
f(arr[, arr1, ... ,arrN])— 用于处理数组x中元素的 lambda 函数。Lambda functionarr— 要排序的数组。Array(T)arr1, ... ,arrN— 当f接受多个参数时,额外的 N 个数组。Array(T)limit— 排序将进行到的索引值。(U)Int*
[1..limit] 范围内的元素按升序排序。
其余元素 (limit..N] 的顺序未指定。
示例
simple_int
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
arrayPopBack
arr— 要移除其最后一个元素的数组。Array(T)
arr 相同但不包含其最后一个元素的数组 Array(T)
示例
使用示例
Query
Response
arrayPopFront
arr— 要删除其首个元素的数组。Array(T)
arr 相同但不包含其首个元素的数组 Array(T)
示例
用法示例
Query
Response
arrayProduct
func,则返回 lambda 计算结果中各元素的乘积。
语法
func(x[, y1, ..., yN])— 可选。对源数组 (x) 和条件数组 (y) 中的元素进行处理的 lambda 函数。lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,用于为 lambda 函数提供额外参数。Array(T)
Float64
示例
基本示例
Query
Response
Query
Response
arrayPushBack
- 只有数值才能添加到数值数组中,只有字符串才能添加到字符串数组中。
- 添加数值时,ClickHouse 会根据数组的数据类型自动设置
x的类型。 - 可以为
NULL。该函数会向数组中添加一个NULL元素,并将数组元素的类型转换为Nullable。
arr 相同、但在数组末尾额外添加了值 x 的数组 Array(T)
示例
使用示例
Query
Response
arrayPushFront
- 只有数值才能添加到数值数组中,只有字符串才能添加到字符串数组中。
- 添加数值时,ClickHouse 会根据数组的数据类型自动设置
x的类型。 - 可以为
NULL。该函数会向数组中添加一个NULL元素,并将数组元素的类型转换为Nullable。
arr 相同的数组,但在数组开头额外添加了一个值 x Array(T)
示例
使用示例
Query
Response
arrayROCAUC
arrayAUC
参数
scores— 预测模型给出的分数。Array((U)Int*)或Array(Float*)labels— 样本标签,通常正样本为 1,负样本为 0。Array((U)Int*)或枚举scale— 可选。决定是否返回归一化后的面积。如果为 false,则返回 TP (真正例) × FP (假正例) 曲线下的面积。默认值:true。Boolpartial_offsets—- 一个包含四个非负整数的数组,用于计算 ROC 曲线下的部分面积 (相当于 ROC 空间中的一个垂直带) ,而不是整个 AUC。此选项适用于 ROC AUC 的分布式计算。该数组必须包含以下元素 [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]。Array(元素为非负Integer) 。可选。higher_partitions_tp: 更高评分分区中的正标签数量。higher_partitions_fp: 更高评分分区中的负标签数量。total_positives: 整个数据集中的正样本总数。total_negatives: 整个数据集中的负样本总数。
当使用
arr_partial_offsets 时,arr_scores 和 arr_labels 应仅包含整个数据集中的一个分区,即某个分数区间内的数据。
数据集应划分为连续分区,每个分区都包含分数落在特定范围内的数据子集。
例如:- 一个分区可以包含范围 [0, 0.5) 内的所有分数。
- 另一个分区可以包含范围 [0.5, 1.0] 内的分数。
Float64
示例
用法示例
Query
Response
arrayRandomSample
samples 个元素组成的子集。如果 samples 超过输入数组的大小,则样本数会限制为数组大小,也就是说会返回数组中的所有元素,但不保证其顺序。该函数既可处理扁平数组,也可处理嵌套数组。
语法
Array(T)
示例
使用示例
Query
Response
Query
Response
arrayReduce
'max'、'sum'。
使用参数化 聚合函数 时,参数写在函数名后的括号中,例如 'uniqUpTo(6)'。
Syntax
Query
Response
Query
Response
Query
Response
arrayReduceInRanges
arrayReduce(agg_func, arraySlice(arr1, index, length), ...) 相同。
语法
agg_f— 要使用的聚合函数名称。Stringranges— 要聚合的范围。由元组(i, r)组成的数组,其中i表示起始索引,r表示聚合范围。Array(T)或Tuple(T)arr1[, arr2, ... ,arrN]— 作为聚合函数参数的 N 个数组。Array(T)
Array(T)
示例
使用示例
Query
Response
arrayRemove
array_remove
参数
arr— Array(T) -elem— T
Array(T)
示例
示例 1
Query
Response
Query
Response
arrayResize
arr— 要调整大小的数组。Array(T)size— -数组的新长度。 如果size小于数组的原始长度,则从右侧截断数组。 如果size大于数组的初始长度,则在右侧使用extender值或数组元素数据类型的默认值对数组进行扩展。extender— 用于扩展数组的值。可以为NULL。
size 的数组。Array(T)
示例
示例 1
Query
Response
Query
Response
arrayReverse
函数
reverse(arr) 具有相同的功能,但除了 Array 类型外,还可用于其他数据类型。arr— 要反转的数组。Array(T)
Array(T)
示例
使用示例
Query
Response
arrayReverseFill
arrayReverseFill 函数会从最后一个元素开始,按顺序向前处理源数组直到第一个元素,并在每个位置使用源数组和条件数组中的元素对 lambda 条件进行求值。当位置 i 处的条件求值结果为 false 时,函数会用数组当前状态中位置 i+1 处的元素替换该位置的元素。无论条件如何,最后一个元素始终会被保留。
Syntax
func(x[, y1, ..., yN])— 一个 lambda 函数,对源数组 (x) 和条件数组 (y) 中的元素进行处理。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
Array(T)
示例
单个数组示例
Query
Response
Query
Response
arrayReverseSort
f,则会根据该函数作用于数组元素后得到的结果对给定数组排序,
然后再将排序后的数组反转。
如果 f 接受多个参数,则会向 arrayReverseSort 函数传入多个数组,
这些数组分别对应 func 的参数。
如果待排序的数组包含 -Inf、NULL、NaN 或 Inf,它们将按以下顺序排序:
-InfInfNaNNULL
arrayReverseSort 是一个高阶函数。
语法
f(y1[, y2 ... yN])— 应用于数组x元素的 Lambda 函数。 -arr— 要排序的数组。Array(T)-arr1, ..., yN— 可选。当f接受多个参数时,表示额外的 N 个数组。
x;否则,
返回先按所提供 Lambda 函数的逻辑排序、再反转后的数组。Array(T)。
示例
示例 1
Query
Response
Query
Response
arrayReverseSplit
func(x[, y1, ..., yN]) 返回非零值时,数组会在该元素右侧拆分。最后一个元素之后不会拆分。
语法
func(x[, y1, ..., yN])— 对源数组 (x) 和条件数组 (y) 中的元素执行操作的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Lambda 函数[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
Array(Array(T))
示例
使用示例
Query
Response
arrayRotateLeft
n 为负值时,会按旋转量的绝对值向右旋转。
语法
arr— 要旋转其元素的数组。Array(T)。 -n— 要旋转的元素个数。(U)Int8/16/32/64。
Array(T)
示例
使用示例
Query
Response
Query
Response
arrayRotateRight
n 为负值时,会按其绝对值向左旋转。
语法
arr— 其元素需要进行旋转的数组。Array(T)。 -n— 要旋转的元素个数。(U)Int8/16/32/64。
Array(T)
示例
用法示例
Query
Response
Query
Response
arrayShiftLeft
arr— 要进行元素移位的数组。Array(T)。 -n— 要移位的元素个数。(U)Int8/16/32/64。 -default— 可选。新元素的默认值。
Array(T)
示例
使用示例
Query
Response
Query
Response
Query
Response
arrayShiftRight
arr— 要进行元素移位的数组。Array(T)n— 要移位的元素个数。(U)Int8/16/32/64default— 可选。新元素的默认值。
Array(T)
示例
使用示例
Query
Response
Query
Response
Query
Response
arrayShingles
Array(T)
示例
使用示例
Query
Response
arrayShuffle
此函数不会物化常量。
Array(T)
示例
不带 seed 的示例 (结果不稳定)
Query
Response
Query
Response
arraySimilarity
0 到 1 范围内的相似度。
语法
from— 第一个数组Array(T)to— 第二个数组Array(T)from_weights— 第一个数组的权重Array((U)Int*|Float*)to_weights— 第二个数组的权重Array((U)Int*|Float*)
0 和 1 之间的相似度 Float64
示例
使用示例
Query
Response
arraySlice
NULL 元素。
语法
arr— 要切片的数组。Array(T)offset— 相对于数组边界的偏移量。正值表示从左侧开始偏移,负值表示从右侧开始偏移。数组元素从1开始编号。(U)Int*length— 所需切片的长度。如果指定负值,函数返回一个开区间切片[offset, array_length - length]。如果省略该值,函数返回切片[offset, the_end_of_array]。(U)Int*
offset 开始、包含 length 个元素的数组切片。Array(T)
示例
用法示例
Query
Response
arraySort
f,排序顺序将由
该 lambda function 作用于数组每个元素后的结果决定。
如果该 lambda function 接受多个参数,arraySort 函数会传入多个
数组,这些数组分别对应 f 的各个参数。
如果待排序的数组包含 -Inf、NULL、NaN 或 Inf,它们将按以下顺序排序:
-InfInfNaNNULL
arraySort 是一个高阶函数。
语法
f(y1[, y2 ... yN])— 应用于数组x元素的 lambda 函数。 -arr— 要排序的数组。Array(T)-arr1, ..., yN— 可选。当f接受多个参数时,表示另外 N 个数组。
arr;否则,
返回根据所提供 lambda 函数逻辑排序后的数组。Array(T)。
示例
示例 1
Query
Response
Query
Response
Query
Response
arraySplit
func(x [, y1, ..., yN]) 返回非零值时,会在该元素左侧拆分数组。第一个元素之前不会发生拆分。
语法
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中的元素进行操作的 Lambda 函数。Lambda 函数。 -source_arr— 要拆分的源数组Array(T)。 -[, cond1_arr, ... , condN_arr]— 可选。为 Lambda 函数提供附加参数的 N 个条件数组。Array(T)。
Array(Array(T))
示例
使用示例
Query
Response
arraySum
func,则返回 lambda 计算结果之和。
语法
func(x[, y1, ..., yN])— 可选。对源数组 (x) 和条件数组 (y) 中的元素执行操作的 Lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T), cond1_arr, ... , condN_arr]— 可选。N 个条件数组,用于为 Lambda 函数提供额外参数。Array(T)
Query
Response
Query
Response
arraySymmetricDifference
两个以上集合的对称差在数学上定义为:
由所有出现在奇数个输入集合中的元素组成的集合。
相比之下,函数
arraySymmetricDifference 只是返回未出现在所有输入集合中的输入元素集合。arrN— 用于构造新数组的 N 个数组。Array(T)。
Array(T)
示例
用法示例
Query
Response
arrayTranspose
arr— 要进行转置的二维数组。所有内层数组的长度都必须相同。Array(Array(T))
[i][j] 等于输入中的元素 [j][i]。Array(Array(T))
示例
方阵
Query
Response
Query
Response
Query
Response
arrayUnion
arrN— 用于构造新数组的 N 个数组。Array(T)
Array(T)
示例
使用示例
Query
Response
arrayUniq
SELECT arrayUniq([1,2], [3,4], [5,6]) 会形成以下 Tuple:
- 位置 1:(1,3,5)
- 位置 2:(2,4,6)
2。
所有传入的数组长度必须相同。
Syntax
UInt32
示例
单个参数
Query
Response
Query
Response
arrayWithConstant
length 的数组,并用常量 x 填充。
语法
length— 数组中的元素个数。(U)Int*x— 数组中N个元素的值,可以是任意类型。
N 个元素且每个元素的值都为 x 的数组。Array(T)
示例
用法示例
Query
Response
arrayZip
arr1, arr2, ... , arrN— 要合并成单个数组的 N 个数组。Array(T)
Array(T)
示例
使用示例
Query
Response
arrayZipUnaligned
arr1, arr2, ..., arrN— 将 N 个数组合并为一个数组。Array(T)
Array(T) 或 Tuple(T1, T2, ...)
示例
使用示例
Query
Response
countEqual
x 的元素数量。等价于 arrayCount(elem -> elem = x, arr)。
NULL 元素会作为单独的值处理。
语法
arr— 待搜索的数组。Array(T)x— 要在数组中统计的值。任意类型。
x 的元素数量 UInt64
示例
使用示例
Query
Response
empty
启用
optimize_functions_to_subcolumns setting 后可对此进行优化。将 optimize_functions_to_subcolumns = 1 时,该函数只会读取 size0 子列,而不是读取并处理整个数组列。查询 SELECT empty(arr) FROM TABLE; 会转换为 SELECT arr.size0 = 0 FROM TABLE;。arr— 输入数组。Array(T)
1,非空数组返回 0。UInt8
示例
用法示例
Query
Response
emptyArrayDate
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayDateTime
- 无。
Array(T)
示例
使用示例
Query
Response
emptyArrayFloat32
- 无。
Array(T)
示例
使用示例
Query
Response
emptyArrayFloat64
- 无。
Array(T)
示例
使用示例
Query
Response
emptyArrayInt16
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayInt32
- 无。
Array(T)
示例
使用示例
Query
Response
emptyArrayInt64
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayInt8
- 无。
Array(T)
示例
使用示例
Query
Response
emptyArrayString
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayToSingle
arr— 空数组。Array(T)
Array 默认类型值的数组。Array(T)
示例
基础示例
Query
Response
emptyArrayUInt16
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayUInt32
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayUInt64
- 无。
Array(T)
示例
用法示例
Query
Response
emptyArrayUInt8
- 无。
Array(T)
示例
使用示例
Query
Response
has
has(constant_array, column) 的行为类似于 column IN (constant_array),并且可利用主键和跳过索引进行优化。例如,如果 id 是 PRIMARY KEY 的一部分,则 has([1, 10, 100], id) 可以利用主键索引。
当列被单调函数包裹时,此优化同样适用 (例如,has([...], toDate(ts))) 。
语法
1;否则返回 0。UInt8
示例
数组 基本用法
Query
Response
Query
Response
Query
Response
Query
Response
hasAll
- 空数组是任何数组的子集。
Null会被视为一个值处理。- 两个数组中值的顺序都不重要。
- 如果
set包含subset中的所有元素,则返回1。 - 否则返回
0。
set 和 subset 的元素不具有共同超类型,则会引发 NO_COMMON_TYPE 异常。
示例
空数组
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasAny
Null会作为一个值处理。- 两个数组中值的顺序都不影响结果。
1,如果arr_x和arr_y至少有一个相同的元素。0,否则。
NO_COMMON_TYPE 异常。
示例
一个数组为空
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
hasSubstr
1。
换句话说,该函数会像 hasAll 函数一样,检查 array2 的所有元素是否都包含在 array1 中。
此外,它还会检查这些元素在 array1 和 array2 中的出现顺序是否一致。
- 如果 array2 为空,函数将返回
1。 NULL会作为一个值处理。换句话说,hasSubstr([1, 2, NULL, 3, 4], [2,3])将返回0。但是,hasSubstr([1, 2, NULL, 3, 4], [2,NULL,3])将返回1- 两个数组中值的顺序都很重要。
NO_COMMON_TYPE 异常。
语法
arr1 包含数组 arr2,则返回 1;否则返回 0。UInt8
示例
两个数组都为空
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
indexOf
0。
值为 NULL 的元素会被视为普通值处理。
语法
arr 中存在 x,则返回第一个 x 的索引 (从 1 开始编号) ;否则返回 0。UInt64
示例
基本示例
Query
Response
Query
Response
indexOfAssumeSorted
1 开始) 。
如果数组不包含要查找的值,函数将返回 0。
与
indexOf 函数不同,此函数假定数组已按
升序排列。如果数组未排序,则结果未定义。arr 中存在 x,则返回第一个 x 的索引 (从 1 开始) 。否则返回 0。UInt64
示例
基本示例
Query
Response
kql_array_sort_asc
array1— 要排序的数组。Array(T)array2— 可选。会按照array1的排序顺序重新排列的其他数组。Array(T)nulls_last— 可选。布尔值,指示是否将 null 放在最后。默认为 true。UInt8
Tuple(Array, ...)
示例
基本用法
Query
Response
kql_array_sort_desc
array1— 要排序的数组。Array(T)array2— 可选的附加数组,会根据 array1 的排序顺序重新排序。Array(T)nulls_last— 可选布尔值,用于指示是否将 null 排在最后。默认值为 true。UInt8
Tuple(Array, ...)
示例
基本用法
Query
Response
length
- 对于 String 或 FixedString 参数:计算字符串中的字节数。
- 对于 Array 参数:计算数组中的元素数量。
- 如果应用于 FixedString 参数,该函数是一个常量表达式。
OCTET_LENGTH
参数
x— 要计算其字节数 (对于 String/FixedString) 或元素个数 (对于 Array) 的值。String或FixedString或Array(T)
x 的字节数,或数组 x 的元素个数。UInt64
示例
String 示例
Query
Response
Query
Response
Query
Response
Query
Response
Query
Response
notEmpty
可通过启用
optimize_functions_to_subcolumns 设置进行优化。当 optimize_functions_to_subcolumns = 1 时,该函数只会读取 size0 子列,而不是读取并处理整个数组列。查询 SELECT notEmpty(arr) FROM table 会转换为 SELECT arr.size0 != 0 FROM TABLE。arr— 输入数组。Array(T)
1,空数组返回 0 UInt8
示例
使用示例
Query
Response
range
start 开始,以 step 为步长,到 end - 1 结束。
支持的类型有:
-
UInt8/16/32/64 -
Int8/16/32/64] -
所有参数
start、end、step都必须是上述支持的类型之一。返回的 数组 元素类型将是这些参数的超类型。 -
如果函数返回的 数组 总长度超过设置
function_range_max_elements_in_block指定的元素个数,则会抛出异常。 -
如果任一参数的类型为 Nullable(nothing),则返回
NULL。如果任一参数的值为NULL(Nullable(T) 类型) ,则会抛出异常。
start— 可选。数组的第一个元素。使用step时为必填。默认值:0。-end— 必填。数组将生成到该数字之前。-step— 可选。指定数组中相邻元素之间的递增步长。默认值:1。
start 到 end - 1、步长为 step 的数字数组。Array(T)
示例
使用示例
Query
Response
replicate
arr 相同、且所有元素都为 x 的数组。Array(T)
示例
使用示例
Query
Response
reverse
Query
Response
Query
Response