数组函数
array
引入于:v1.1
根据函数参数创建一个数组。
参数应为常量,并且具有共享的共同超类型。
必须传递至少一个参数,因为否则不清楚要创建哪种类型的数组。
这意味着您不能使用此函数创建空数组。要创建空数组,请使用emptyArray*函数。
使用[ ]运算符获得相同的功能。
语法
参数
x1— 任何类型 T 的常量值。如果仅提供此参数,则数组将为类型 T。 -[, x2, ..., xN]— 共享与x1相同超类型的额外 N 个常量值
返回值
返回一个数组,其中 'T' 是传递参数中最小的共同类型。 Array(T)
示例
有效用法
无效用法
arrayAUCPR
引入于:v20.4
计算精确率-召回(PR)曲线下的面积。 精确率-召回曲线是通过将精确率绘制在 y 轴上而产生的,同时将召回率绘制在 x 轴上,覆盖所有阈值。 结果值范围为 0 到 1,较高的值表示更好的模型表现。 PR AUC 特别适用于不平衡数据集,与 ROC AUC 相比,它提供了更清晰的性能比较。 有关更多详细信息,请参阅 这里, 这里 和 这里。
语法
参数
cores— 评分预测模型给出的分数。Array((U)Int*)或Array(Float*)labels— 样本标签,通常正样本为 1,负样本为 0。Array((U)Int*)或Array(Enum)partial_offsets—- 可选。用于计算 PR 曲线部分面积的一个
Array(T),包括三个非负整数(相当于 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] 范围内。
返回值
返回精确率-召回(PR)曲线下的面积。 Float64
示例
用法示例
arrayAll
引入于:v1.1
如果 lambda 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)
返回值
如果 lambda 函数对所有元素返回 true,则返回 1,否则返回 0 UInt8
示例
所有元素匹配
并非所有元素匹配
arrayAvg
引入于:v21.1
返回源数组中元素的平均值。
如果指定了 lambda 函数 func,则返回 lambda 结果的元素平均值。
语法
参数
func(x[, y1, ..., yN])— 可选。对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
返回值
返回源数组中元素的平均值,如果提供了lambda结果,则返回lambda结果的元素平均值。 Float64
示例
基本示例
与 lambda 函数的用法
arrayCompact
引入于:v20.1
删除数组中连续重复的元素,包括 null 值。结果数组中的值的顺序根据源数组中的顺序确定。
语法
参数
arr— 要去重的数组。Array(T)
返回值
返回一个没有重复值的数组 Array(T)
示例
用法示例
arrayConcat
引入于:v1.1
将作为参数传递的数组组合在一起。
语法
参数
arr1 [, arr2, ... , arrN]— N 个要连接的数组。Array(T)
返回值
返回由提供的数组参数组成的单个组合数组。 Array(T)
示例
用法示例
arrayCount
引入于:v1.1
返回func(arr1[i], ..., arrN[i])返回 true 的元素数量。
如果未指定func,则返回数组中非零元素的数量。
arrayCount 是一个 高阶函数。
语法
参数
func— 可选。要应用于数组中每个元素的函数。Lambda functionarr1, ..., arrN— N 个数组。Array(T)
返回值
返回func返回 true 的元素数量。否则,返回数组中非零元素的数量。 UInt32
示例
用法示例
arrayCumSum
引入于:v1.1
返回源数组中元素的部分(运行)和的数组。如果指定了 lambda 函数,则通过将 lambda 应用到数组中每个位置的元素来计算和。
语法
参数
func— 可选。要应用于每个位置的数组元素的 lambda 函数。Lambda functionarr1— 源数组的数值。Array(T)[arr2, ..., arrN]— 可选。作为参数传递给 lambda 函数的相同大小的其他数组。Array(T)
返回值
返回源数组中元素的部分和的数组。结果类型与输入数组的数值类型相匹配。 Array(T)
示例
基本用法
与 lambda 的用法
arrayCumSumNonNegative
引入于:v18.12
返回源数组中元素的部分(运行)和的数组,将任何负数的运行和替换为零。如果指定了 lambda 函数,则通过将 lambda 应用到数组中每个位置的元素来计算和。
语法
参数
func— 可选。要应用于每个位置的数组元素的 lambda 函数。Lambda functionarr1— 源数组的数值。Array(T)[arr2, ..., arrN]— 可选。作为参数传递给 lambda 函数的相同大小的其他数组。Array(T)
返回值
返回源数组中元素的部分和的数组,将任何负数的运行和替换为零。结果类型与输入数组的数值类型相匹配。 Array(T)
示例
基本用法
与 lambda 的用法
arrayDifference
引入于:v1.1
计算相邻数组元素之间的差的数组。
结果数组的第一个元素为 0,第二个为 arr[1] - arr[0],第三个为 arr[2] - arr[1],以此类推。
结果数组中元素的类型由减法的类型推断规则确定(例如 UInt8 - UInt8 = Int16)。
语法
参数
arr— 用于计算相邻元素之间差异的数组。Array(T)
返回值
返回相邻数组元素之间的差的数组 UInt*
示例
用法示例
由于结果类型 Int64 导致的溢出示例
arrayDistinct
引入于:v1.1
返回一个只包含数组中不同元素的数组。
语法
参数
arr— 用于提取不同元素的数组。Array(T)
返回值
返回一个只包含不同元素的数组 Array(T)
示例
用法示例
arrayDotProduct
引入于:v23.5
返回两个数组的点积。
两个向量的大小必须相等。数组和元组也可以包含混合元素类型。
语法
参数
v1— 第一个向量。Array((U)Int* | Float* | Decimal)或Tuple((U)Int* | Float* | Decimal)v2— 第二个向量。Array((U)Int* | Float* | Decimal)或Tuple((U)Int* | Float* | Decimal)
返回值
两个向量的点积。
返回类型由参数的类型决定。如果数组或元组包含混合元素类型,则结果类型为超类型。
示例
数组示例
元组示例
arrayElement
引入于:v1.1
获取提供的数组中索引为 n 的元素,其中 n 可以是任何整数类型。
如果索引超出了数组的范围,则返回默认值(数字为 0,字符串为空等),
除非参数是非恒定数组和常量索引 0。在这种情况下,将出现错误 Array indices are 1-based。
ClickHouse 中的数组是基于 1 的索引。
支持负索引。在这种情况下,从末尾开始编号,选择对应的元素。例如,arr[-1] 是数组中的最后一个项。
运算符 [n] 提供相同的功能。
语法
参数
返回值
返回单个组合数组,来自提供的数组参数 Array(T)
示例
用法示例
负索引
使用 [n] 符号
索引超出数组范围
arrayElementOrNull
引入于:v1.1
获取提供的数组中索引为 n 的元素,其中 n 可以是任何整数类型。
如果索引超出了数组的范围,则返回 NULL,而不是默认值。
ClickHouse 中的数组是基于 1 的索引。
支持负索引。在这种情况下,它选择从末尾开始编号的对应元素。例如,arr[-1] 是数组中的最后一个项。
语法
参数
arrays— 任意数量的数组参数。Array
返回值
返回单个组合数组,来自提供的数组参数. Array(T)
示例
用法示例
负索引
索引超出数组范围
arrayEnumerate
引入于:v1.1
返回数组 [1, 2, 3, ..., length (arr)]
此函数通常与 ARRAY JOIN 子句一起使用。它允许对每个数组计数一次,方法是在应用 ARRAY JOIN 之后。
此函数也可以在高阶函数中使用。例如,可以使用它来获取与条件匹配的元素的数组索引。
语法
参数
arr— 要枚举的数组。Array
返回值
返回数组 [1, 2, 3, ..., length (arr)]。 Array(UInt32)
示例
与 ARRAY JOIN 的基本示例
arrayEnumerateDense
引入于:v18.12
返回一个与源数组大小相同的数组,指示每个元素在源数组中首次出现的位置。
语法
参数
arr— 要枚举的数组。Array(T)
返回值
返回一个与 arr 大小相同的数组,指示每个元素在源数组中首次出现的位置 Array(T)
示例
用法示例
arrayEnumerateDenseRanked
引入于:v20.1
返回一个与源数组同样大小的数组,指示每个元素在源数组中首次出现的位置。它允许对多维数组进行枚举,并能够指定深入数组查看的层级。
语法
参数
clear_depth— 分别枚举指定层级的元素。必须小于或等于max_arr_depth。UInt*arr— 要枚举的 N 维数组。Array(T)max_array_depth— 最大有效深度。必须小于或等于arr的深度。UInt*
返回值
返回一个数组,表示每个元素在源数组中首次出现的位置 Array
示例
基本用法
与多维数组的用法
使用增加的 clear_depth 的示例
arrayEnumerateUniq
引入于:v1.1
返回一个与源数组大小相同的数组,指示每个元素在具有相同值的元素中的位置。
此函数在使用 ARRAY JOIN 和数组元素聚合时非常有用。
该函数可以接受多个相同大小的数组作为参数。在这种情况下,唯一性考虑的是在所有数组中相同位置的元素元组。
语法
参数
arr1— 第一个要处理的数组。Array(T)arr2, ...— 可选。相同大小的其他数组,以实现元组唯一性。Array(UInt32)
返回值
返回一个数组,其中每个元素是具有相同值或元组的元素中的位置。 Array(T)
示例
基本用法
多个数组
ARRAY JOIN 聚合
arrayEnumerateUniqRanked
引入于:v20.1
返回与源数组相同维度的数组(或多维数组),指示每个元素在具有相同值的元素中的位置。 它允许对多维数组进行枚举,能够指定深入数组查看的层级。
语法
参数
clear_depth— 分别枚举指定层级的元素。正整数,必须小于或等于max_arr_depth。UInt*arr— 要枚举的 N 维数组。Array(T)max_array_depth— 最大有效深度。正整数,必须小于或等于arr的深度。UInt*
返回值
返回一个与 arr 相同大小的 N 维数组,其中每个元素显示该元素相较于其他相同值元素的位置。 Array(T)
示例
示例 1
示例 2
示例 3
示例 4
arrayExcept
引入于:v25.9
返回一个包含 source 中元素而不在 except 中的数组,保持原始顺序。
此函数对两个数组执行集合差集操作。对于 source 中的每个元素,它检查该元素是否存在于 except 中(使用精确比较)。如果不存在,则将该元素包含在结果中。
该操作保持以下属性:
- 从
source中的元素顺序得以保持 - 在
source中的重复项将保持,前提是它们不在except中 - NULL 被视为单独的值
语法
参数
返回值
返回与输入数组相同类型的数组,包含未在 except 中找到的 source 中的元素。 Array(T)
示例
基本
有 NULL 的情况 1
有 NULL 的情况 2
字符串
arrayExists
引入于:v1.1
如果源数组中至少有一个元素使得 func(x[, y1, y2, ... yN]) 返回 true,则返回 1。否则,返回 0。
语法
参数
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供额外参数。Array(T)
返回值
如果 lambda 函数对至少一个元素返回 true,则返回 1,否则返回 0 UInt8
示例
用法示例
arrayFill
引入于:v20.1
arrayFill 函数顺序处理源数组,从第一个元素到最后一个元素,在每个位置上评估 lambda 条件,使用源数组和条件数组的元素。当 lambda 函数在位置 i 处评估为 false 时,该函数将该元素替换为数组当前状态中位置 i-1 的元素。第一个元素始终被保留,不受任何条件影响。
语法
参数
func(x [, y1, ..., yN])— 操作源数组 (x) 和条件数组 (y) 元素的 lambda 函数func(x [, y1, y2, ... yN]) → F(x [, y1, y2, ... yN] )。 [Lambda function`](/sql-reference/functions/overview#arrow-operator-and-lambda)source_arr— 要处理的源数组。Lambda function[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
返回值
返回数组 Array(T)
示例
使用单个数组的示例
使用两个数组的示例
arrayFilter
引入于:v1.1
返回一个数组,仅包含源数组中返回 true 的元素。
语法
参数
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N 个条件数组,为 lambda 函数提供额外参数。Array(T)
返回值
返回源数组的子集 Array(T)
示例
示例 1
示例 2
arrayFirst
引入于:v1.1
返回源数组中第一个使得 func(x[, y1, y2, ... yN]) 返回 true 的元素,否则返回默认值。
语法
参数
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。 Lambda function. -source_arr— 要处理的源数组。Array(T). -[, cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供额外参数。Array(T).
返回值
返回源数组中第一个使得 λ 为 true 的元素,否则返回 T 的默认值。
示例
用法示例
无匹配项
arrayFirstIndex
引入于:v1.1
返回源数组中第一个使得 func(x[, y1, y2, ... yN]) 返回 true 的元素的索引,否则返回 '0'。
语法
参数
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。 Lambda function. -source_arr— 要处理的源数组。Array(T). -[, cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供额外参数。Array(T).
返回值
返回源数组中第一个使得 func 为 true 的元素的索引,否则返回 0 UInt32
示例
用法示例
无匹配项
arrayFirstOrNull
引入于:v1.1
返回源数组中第一个使得 func(x[, y1, y2, ... yN]) 返回 true 的元素,否则返回 NULL。
语法
参数
func(x[, y1, ..., yN])— 一个对源数组 (x) 和条件数组 (y) 中元素操作的 lambda 函数。Lambda functionsource_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供额外参数。Array(T)
返回值
返回源数组中第一个使得 func 为 true 的元素,否则返回 NULL。
示例
用法示例
无匹配项
arrayFlatten
引入于:v20.1
将数组的数组转换为平面数组。
函数:
- 适用于任何深度的嵌套数组。
- 不会更改已经是平面的数组。
扁平数组包含所有源数组中的所有元素。
语法
参数
arr— 一个多维数组。Array(Array(T))
返回值
返回从多维数组中扁平化的数组 Array(T)
示例
用法示例
arrayFold
引入于:v23.10
对一个或多个大小相等的数组应用 lambda 函数,并将结果收集到一个累加器中。
语法
参数
λ(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 值。
示例
用法示例
斐波那契数列
使用多个数组的示例
arrayIntersect
引入于:v1.1
接受多个数组并返回一个包含在所有源数组中的元素的数组。结果仅包含唯一值。
语法
参数
arrN— 从中创建新数组的 N 个数组。Array(T).
返回值
返回一个包含在所有 N 个数组中的不同元素的数组 Array(T)
示例
用法示例
arrayJaccardIndex
引入于:v23.7
返回两个数组的 Jaccard 指数。
语法
参数
返回值
返回 arr_x 和 arr_y 的 Jaccard 指数 Float64
示例
用法示例
arrayJoin
引入于:v1.1
arrayJoin 函数接受一个包含数组的行并展开它,生成多行——每个元素对应一行。
这与 ClickHouse 的常规函数形成对比,常规函数将输入值映射到同一行的输出值,而聚合函数则将一组行“压缩”或“减少”成一行汇总(或者在与 GROUP BY 一起使用时为汇总行中的单个值)。
除了应用此函数的列中的值被替换为相应的数组值外,所有列中的值都被简单地复制。
语法
参数
arr— 要展开的数组。Array(T)
返回值
返回从 arr 展开的多行。
示例
基本用法
arrayJoin 影响查询的所有部分
使用多个 arrayJoin 函数
由于优化而导致的意外结果
使用 ARRAY JOIN 语法
使用 Tuple
arrayLast
引入于:v1.1
返回源数组中最后一个满足 lambda func(x [, y1, y2, ... yN]) 返回 true 的元素,否则返回默认值。
语法
参数
func(x[, y1, ..., yN])— 在源数组元素 (x) 和条件数组 (y) 上操作的 lambda 函数。 Lambda 函数source— 要处理的源数组。Array(T)[, cond1, ... , condN]— 可选。 N 个条件数组,向 lambda 函数提供附加参数。Array(T)
返回值
返回源数组中满足 func 的最后一个元素,否则返回 T 的默认值。
示例
用法示例
未匹配
arrayLastIndex
引入于:v1.1
返回源数组中最后一个满足 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 的元素的索引,否则返回 0 UInt32
示例
用法示例
未匹配
arrayLastOrNull
引入于:v1.1
返回源数组中最后一个满足 lambda 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)
返回值
返回源数组中最后一个不满足 λ 的元素,否则返回 NULL。
示例
用法示例
未匹配
arrayLevenshteinDistance
引入于:v25.4
计算两个数组的 Levenshtein 距离。
语法
参数
返回值
第一个数组和第二个数组之间的 Levenshtein 距离。 Float64
示例
用法示例
arrayLevenshteinDistanceWeighted
引入于:v25.4
计算两个数组的 Levenshtein 距离,并为每个元素分配自定义权重。 数组的元素数量和权重应该匹配。
语法
参数
from— 第一个数组。Array(T)to— 第二个数组。Array(T)from_weights— 第一个数组的权重。Array((U)Int*|Float*)to_weights— 第二个数组的权重。Array((U)Int*|Float*)
返回值
第一个数组和第二个数组之间带有自定义元素权重的 Levenshtein 距离 Float64
示例
用法示例
arrayMap
引入于:v1.1
返回通过对每个元素应用 lambda 函数得到的数组。
语法
参数
返回值
返回由 lambda 结果生成的数组 Array(T)
示例
用法示例
从不同数组创建元素的元组
arrayMax
引入于:v21.1
返回源数组中的最大元素。
如果指定了 lambda 函数 func,则返回 lambda 结果的最大元素。
语法
参数
func(x[, y1, ..., yN])— 可选。在源数组元素 (x) 和条件数组 (y) 上操作的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。 N 个条件数组,向 lambda 函数提供附加参数。Array(T)
返回值
返回源数组中的最大元素,或者如果提供,则返回 lambda 结果中的最大元素。
示例
基本示例
与 lambda 函数一起使用
arrayMin
引入于:v21.1
返回源数组中的最小元素。
如果指定了 lambda 函数 func,则返回 lambda 结果的最小元素。
语法
参数
func(x[, y1, ..., yN])— 可选。在源数组元素 (x) 和条件数组 (y) 上操作的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)cond1_arr, ...— 可选。 N 个条件数组,向 lambda 函数提供附加参数。Array(T)
返回值
返回源数组中的最小元素,或者如果提供,则返回 lambda 结果中的最小元素。
示例
基本示例
与 lambda 函数一起使用
arrayNormalizedGini
引入于:v25.1
计算标准化的 Gini 系数。
语法
参数
返回值
一个包含预测值的 Gini 系数、标准化值的 Gini 系数和标准化 Gini 系数(= 前两个 Gini 系数的比率)的元组 Tuple(Float64, Float64, Float64)
示例
用法示例
arrayPartialReverseSort
引入于:v23.2
此函数与 arrayReverseSort 相同,但增加了一个 limit 参数,允许进行部分排序。
要仅保留已排序的元素,请使用 arrayResize。
语法
参数
f(arr[, arr1, ... ,arrN])— 应用于数组x的元素的 lambda 函数。Lambda 函数arr— 要排序的数组。Array(T)arr1, ... ,arrN— N 个附加数组,适用于f接受多个参数的情况。Array(T)limit— 排序将发生的索引值。(U)Int*
返回值
返回与原始数组大小相同的数组,其中 [1..limit] 范围内的元素按降序排序,其余元素 (limit..N] 则按未指定的顺序排列。
示例
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPartialShuffle
引入于:v23.2
返回一个与原始数组大小相同的数组,其中 [1..limit] 范围内的元素是原始数组的随机子集。剩余的 (limit..n] 则包含不在 [1..limit] 范围内的元素,顺序未定义。
limit 的值必须在 [1..n] 范围内。超出此范围的值相当于执行完整的 arrayShuffle:
语法
参数
arr— 要洗牌的数组。Array(T)seed— 可选。用于随机数生成的种子。如果未提供,则使用随机值。(U)Int*limit— 可选。在[1..N]范围内限制元素交换的数量。(U)Int*
返回值
包含部分洗牌元素的数组。 Array(T)
示例
no_limit1
no_limit2
random_seed
explicit_seed
materialize
arrayPartialSort
引入于:v23.2
此函数与 arraySort 相同,但增加了一个 limit 参数,允许进行部分排序。
要仅保留已排序的元素,请使用 arrayResize。
语法
参数
f(arr[, arr1, ... ,arrN])— 应用于数组x的元素的 lambda 函数。Lambda 函数arr— 要排序的数组。Array(T)arr1, ... ,arrN— N 个附加数组,适用于f接受多个参数的情况。Array(T)limit— 排序将发生的索引值。(U)Int*
返回值
返回与原始数组大小相同的数组,其中 [1..limit] 范围内的元素按升序排序,其余元素 (limit..N] 则按未指定的顺序排列。
示例
simple_int
simple_string
retain_sorted
lambda_simple
lambda_complex
arrayPopBack
引入于:v1.1
从数组中删除最后一个元素。
语法
参数
arr— 要从中删除最后一个元素的数组。Array(T)
返回值
返回一个与 arr 相同但没有最后一个元素的数组 Array(T)
示例
用法示例
arrayPopFront
引入于:v1.1
从数组中删除第一个元素。
语法
参数
arr— 要从中删除第一个元素的数组。Array(T)
返回值
返回一个与 arr 相同但没有第一个元素的数组 Array(T)
示例
用法示例
arrayProduct
引入于:v21.1
返回源数组中元素的乘积。
如果指定了 lambda 函数 func,则返回 lambda 结果的乘积。
语法
参数
func(x[, y1, ..., yN])— 可选。在源数组元素 (x) 和条件数组 (y) 上操作的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。 N 个条件数组,向 lambda 函数提供附加参数。Array(T)
返回值
返回源数组中的元素乘积,或者如果提供,则返回 lambda 结果中的乘积。 Float64
示例
基本示例
与 lambda 函数一起使用
arrayPushBack
引入于:v1.1
在数组末尾添加一个项。
语法
参数
- 只能将数字添加到数字数组,且只能将字符串添加到字符串数组。
- 添加数字时,ClickHouse 会自动为
x设置与数组的数据类型相符的类型。 - 可以是
NULL。该函数将NULL元素添加到数组,数组元素的类型转换为Nullable。
有关 ClickHouse 中数据类型的更多信息,请参见 数据类型。
返回值
返回与 arr 相同,但在数组末尾额外添加了值 x 的数组 Array(T)
示例
用法示例
arrayPushFront
引入于:v1.1
在数组开头添加一个元素。
语法
参数
- 只能将数字添加到数字数组,且只能将字符串添加到字符串数组。
- 添加数字时,ClickHouse 会自动为
x设置与数组的数据类型相符的类型。 - 可以是
NULL。该函数将NULL元素添加到数组,数组元素的类型转换为Nullable。
有关 ClickHouse 中数据类型的更多信息,请参见 数据类型。
返回值
返回与 arr 相同,但在数组开头额外添加了值 x 的数组 Array(T)
示例
用法示例
arrayROCAUC
引入于:v20.4
计算接收者操作特征(ROC)曲线下的面积。 ROC 曲线通过在 y 轴上绘制真正率(TPR)和在 x 轴上绘制假正率(FPR)来创建,涵盖所有阈值。 结果值范围从零到一,值越高表示模型性能越好。
ROC AUC(也称为 AUC)是机器学习中的一个概念。 更多详细信息,请参见 这里, 这里 和 这里。
语法
参数
scores— 预测模型的分数。Array((U)Int*)或Array(Float*)labels— 样本的标签,通常对于正样本为 1,对于负样本为 0。Array((U)Int*)或Enumscale— 可选。决定是否返回标准化面积。如果为 false,则返回 TP(真正例)x FP(假正例)曲线下的面积。默认值:true。Boolpartial_offsets—- 一个包含四个非负整数的数组,用于计算部分 ROC 曲线下的面积(相当于 ROC 空间中的垂直带),而不是整个 AUC。此选项对 ROC AUC 的分布式计算非常有用。数组必须包含以下元素 [
higher_partitions_tp,higher_partitions_fp,total_positives,total_negatives]。 Array 的非负 整型。可选。higher_partitions_tp:在分数较高的分区中的正标签数量。higher_partitions_fp:在分数较高的分区中的负标签数量。total_positives:整个数据集中正样本的总数。total_negatives:整个数据集中负样本的总数。
使用 arr_partial_offsets 时,arr_scores 和 arr_labels 应仅为整个数据集的一部分,包含一段分数的区间。
数据集应被划分为连续分区,每个分区包含分数在特定范围内的数据子集。
例如:
- 一个分区可以包含所有分数在 [0, 0.5) 范围内的样本。
- 另一个分区可以包含分数在 [0.5, 1.0] 范围内的样本。
返回值
返回 ROC 曲线下的面积。 Float64
示例
用法示例
arrayRandomSample
引入于:v23.10
返回包含 samples 个随机元素的子集。如果 samples 超过输入数组的大小,则样本大小限制为数组的大小,即返回所有数组元素,但其顺序不保证。该函数可以处理平面数组和嵌套数组。
语法
参数
返回值
包含输入数组随机样本的数组 Array(T)
示例
用法示例
使用多维数组
arrayReduce
引入于:v1.1
对数组元素应用聚合函数并返回其结果。
聚合函数的名称作为字符串传入,使用单引号引起来,例如 'max'、'sum'。
在使用参数化聚合函数时,参数在函数名称后用括号表示 'uniqUpTo(6)'。
语法
参数
返回值
返回聚合函数的结果。
示例
用法示例
使用多个参数的聚合函数的示例
使用参数化聚合函数的示例
arrayReduceInRanges
引入于:v20.4
对给定范围内的数组元素应用聚合函数,并返回包含每个范围对应结果的数组。
该函数将返回与多个 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)
示例
用法示例
arrayResize
引入于:v1.1
更改数组的长度。
语法
参数
arr— 要调整大小的数组。Array(T)size—- 新的数组长度。
如果
size小于数组的原始大小,则数组从右侧截断。 如果size大于数组的初始大小,则数组向右扩展,使用extender值或数组项数据类型的默认值。 extender— 用于扩展数组的值。可以是NULL。
返回值
长度为 size 的数组。 Array(T)
示例
示例 1
示例 2
arrayReverse
引入于:v1.1
反转给定数组的元素顺序。
函数 reverse(arr) 执行相同的功能,但还适用于其他数据类型,除了数组。
语法
参数
arr— 要反转的数组。Array(T)
返回值
返回与原始数组大小相同并且顺序反转的数组 Array(T)
示例
用法示例
arrayReverseFill
引入于:v20.1
arrayReverseFill 函数按照顺序处理源数组,从最后一个元素处理到第一个元素,在每个位置使用源数组和条件数组中的元素评估 lambda 条件。当条件在位置 i 处评估为 false 时,该函数用当前数组状态中位置 i+1 的元素替换该元素。最后一个元素始终被保留,无论条件如何。
语法
参数
func(x[, y1, ..., yN])— 在源数组元素 (x) 和条件数组 (y) 上操作的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T)[, cond1_arr, ... , condN_arr]— 可选。 N 个条件数组,向 lambda 函数提供附加参数。Array(T)
返回值
返回一个用 lambda 结果替换源数组元素的数组。 Array(T)
示例
单数组示例
两个数组的示例
arrayReverseSort
引入于:v1.1
按降序对数组元素进行排序。
如果指定了函数 f,则提供的数组将根据应用于数组元素的函数结果排序,然后再反转排序后的数组。
如果 f 接受多个参数,则 arrayReverseSort 函数将传递多个数组,func 的参数与这些数组相对应。
如果要排序的数组包含 -Inf、NULL、NaN 或 Inf,则它们将按以下顺序排序:
-InfInfNaNNULL
arrayReverseSort 是一个 高阶函数。
语法
参数
f(y1[, y2 ... yN])— 应用于数组x的元素的 lambda 函数。arr— 要排序的数组。Array(T)arr1, ..., yN— 可选。在f接受多个参数的情况下的 N 个附加数组。
返回值
如果没有提供 lambda 函数,则返回按降序排序的数组 x,否则返回根据提供的 lambda 函数逻辑排序的数组,然后再反转。 Array(T)。
示例
示例 1
示例 2
arrayReverseSplit
引入于:v20.1
将源数组拆分为多个数组。当 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))
示例
用法示例
arrayRotateLeft
引入于:v23.8
将数组向左旋转指定数量的元素。n 的负值视为按绝对旋转值向右旋转。
语法
参数
arr— 要旋转元素的数组。Array(T)n— 要旋转的元素数量。(U)Int8/16/32/64
返回值
向左旋转指定数量的元素的数组 Array(T)
示例
用法示例
n 的负值
arrayRotateRight
引入于:v23.8
将数组向右旋转指定数量的元素。n 的负值视为按绝对旋转值向左旋转。
语法
参数
arr— 要旋转元素的数组。Array(T)n— 要旋转的元素数量。(U)Int8/16/32/64
返回值
向右旋转指定数量的元素的数组 Array(T)
示例
用法示例
n 的负值
arrayShiftLeft
引入版本:v23.8
将数组向左移动指定数量的元素。 新元素使用提供的参数或数组元素类型的默认值填充。 如果元素数量为负,数组将向右移动。
语法
参数
arr— 要移动元素的数组。Array(T)n— 要移动的元素数量。(U)Int8/16/32/64default— 可选。新元素的默认值。
返回值
一个向左移动指定数量元素的数组 Array(T)
示例
用法示例
n的负值
使用默认值
arrayShiftRight
引入版本:v23.8
将数组向右移动指定数量的元素。 新元素使用提供的参数或数组元素类型的默认值填充。 如果元素数量为负,数组将向左移动。
语法
参数
arr— 要移动元素的数组。Array(T)n— 要移动的元素数量。(U)Int8/16/32/64default— 可选。新元素的默认值。
返回值
一个向右移动指定数量元素的数组 Array(T)
示例
用法示例
n的负值
使用默认值
arrayShingles
引入版本:v24.1
生成一个 shingles 数组(类似于字符串的 ngrams),即输入数组的指定长度的连续子数组。
语法
参数
返回值
生成的 shingles 数组 Array(T)
示例
用法示例
arrayShuffle
引入版本:v23.2
返回一个与原数组大小相同的数组,包含随机顺序的元素。 元素的重新排序使得这些元素的每种可能排列出现的概率相等。
此函数将不会物化常量。
语法
参数
返回值
打乱元素的数组 Array(T)
示例
没有种子的例子(不稳定结果)
没有种子的例子(稳定结果)
arraySimilarity
引入版本:v25.4
基于加权的 Levenshtein 距离计算两个数组之间的相似度,范围从 0 到 1。
语法
参数
from— 第一个数组Array(T)to— 第二个数组Array(T)from_weights— 第一个数组的权重。Array((U)Int*|Float*)to_weights— 第二个数组的权重。Array((U)Int*|Float*)
返回值
返回基于加权 Levenshtein 距离的两个数组之间的相似度,范围从 0 到 1 Float64
示例
用法示例
arraySlice
引入版本:v1.1
返回数组的切片,包括 NULL 元素。
语法
参数
arr— 要切片的数组。Array(T)offset— 从数组的边缘的缩进。正值表示左侧的偏移,负值表示右侧的缩进。数组项编号从1开始。(U)Int*length— 所需切片的长度。如果指定负值,函数返回一个开放切片[offset, array_length - length]。如果省略该值,函数返回切片[offset, the_end_of_array]。(U)Int*
返回值
返回从指定 offset 开始的 length 元素的数组切片 Array(T)
示例
用法示例
arraySort
引入版本:v1.1
按升序对提供的数组元素进行排序。
如果指定了 lambda 函数 f,排序顺序由施加于数组每个元素的 lambda 的结果决定。
如果 lambda 接受多个参数,arraySort 函数将传递多个数组,这些数组将对应于 f 的参数。
如果要排序的数组包含 -Inf、NULL、NaN 或 Inf,它们将按以下顺序排序:
-InfInfNaNNULL
arraySort 是一个 高阶函数。
语法
参数
f(y1[, y2 ... yN])— 要施加于数组x元素的 lambda 函数。arr— 要排序的数组。Array(T)arr1, ..., yN— 可选。N个附加数组,当f接受多个参数时使用。
返回值
如果未提供 lambda 函数,则返回升序排序的数组 arr,否则返回根据提供的 lambda 函数逻辑排序的数组。 Array(T)。
示例
示例 1
示例 2
示例 3
arraySplit
引入版本:v20.1
将源数组分割成多个数组。当 func(x [, y1, ..., yN]) 返回非零值时,数组将在元素左侧分割。数组不会在第一个元素之前分割。
语法
参数
func(x[, y1, ..., yN])— 操作源数组 (x) 元素和条件数组 (y) 的 lambda 函数。Lambda 函数source_arr— 要分割的源数组Array(T)[, cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供附加参数。Array(T)
返回值
返回一个数组的数组 Array(Array(T))
示例
用法示例
arraySum
引入版本:v21.1
返回源数组中元素的总和。
如果指定了 lambda 函数 func,则返回 lambda 结果的元素总和。
语法
参数
func(x[, y1, ..., yN])— 可选。操作源数组(x) 元素和条件数组(y) 的 lambda 函数。Lambda 函数source_arr— 要处理的源数组。Array(T), cond1_arr, ... , condN_arr]— 可选。N个条件数组,为 lambda 函数提供附加参数。Array(T)
返回值
返回源数组中元素的总和,或者如果提供了则返回 lambda 结果的元素总和。
示例
基本示例
与 lambda 函数一起使用
arraySymmetricDifference
引入版本:v25.4
接受多个数组并返回一个数组,包含不在所有源数组中的元素。结果仅包含唯一值。
多个集合的对称差是数学定义的
为出现于奇数个输入集合中的所有输入元素。
相反,函数 arraySymmetricDifference 仅仅返回不出现在所有输入集合中的输入元素集合。
语法
参数
arrN— N 个数组,用于创建新数组。Array(T)
返回值
返回一个不在所有源数组中的不同元素的数组 Array(T)
示例
用法示例
arrayUnion
引入版本:v24.10
接受多个数组并返回一个数组,包含在源数组中的所有元素。结果仅包含唯一值。
语法
参数
arrN— N 个数组,用于创建新数组。Array(T)
返回值
返回一个包含来自源数组的不同元素的数组 Array(T)
示例
用法示例
arrayUniq
引入版本:v1.1
对于传入的单个参数,计算数组中不同元素的数量。 对于传入的多个参数,计算在多个数组中对应位置上元素形成的不同 元组 的数量。
例如 SELECT arrayUniq([1,2], [3,4], [5,6]) 将形成以下元组:
- 位置 1: (1,3,5)
- 位置 2: (2,4,6)
它将计算唯一元组的数量。在这种情况下为 2。
所有传入的数组必须具有相同的长度。
如果您想获得数组中的唯一项列表,可以使用 arrayReduce('groupUniqArray', arr)。
语法
参数
返回值
对于单个参数,返回唯一元素的数量。对于多个参数,返回由多个数组中每个相应位置的元素组成的不同元组的数量。 UInt32
示例
单个参数
多个参数
arrayWithConstant
引入版本:v20.1
创建一个长度为 length 的数组,填充常量 x。
语法
参数
length— 数组中的元素数量。(U)Int*x— 数组中N个元素的值,任何类型。
返回值
返回一个值为 x 的 N 元素的数组。 Array(T)
示例
用法示例
arrayZip
引入版本:v20.1
将多个数组组合成一个单一数组。结果数组包含源数组中对应元素的元组,按参数列表中的顺序分组。
语法
参数
arr1, arr2, ... , arrN— N 个数组,被组合成一个单一数组。Array(T)
返回值
返回一个数组,其元素来自源数组,按元组分组。元组中的数据类型与输入数组的类型相同,顺序与数组的传递顺序相同 Array(T)
示例
用法示例
arrayZipUnaligned
引入版本:v20.1
将多个数组组合成一个单一数组,允许未对齐的数组(长度不同的数组)。结果数组包含源数组中对应元素的元组,按参数列表中的顺序分组。
语法
参数
arr1, arr2, ..., arrN— N 个数组,被组合成一个单一数组。Array(T)
返回值
返回一个数组,其元素来自源数组,按元组分组。元组中的数据类型与输入数组的类型相同,顺序与数组的传递顺序相同。 Array(T) 或 Tuple(T1, T2, ...)
示例
用法示例
countEqual
引入版本:v1.1
返回数组中等于 x 的元素数量。等同于 arrayCount(elem -> elem = x, arr)。
NULL 元素被视为单独的值。
语法
参数
arr— 要搜索的数组。Array(T)x— 要计数的数组中的值。任何类型。
返回值
返回数组中等于 x 的元素数量 UInt64
示例
用法示例
empty
引入版本:v1.1
检查输入数组是否为空。
如果数组不包含任何元素,则被视为空数组。
通过启用 optimize_functions_to_subcolumns 设置 可以进行优化。使用 optimize_functions_to_subcolumns = 1,函数仅读取 size0 子列,而不是读取和处理整个数组列。查询 SELECT empty(arr) FROM TABLE; 转换为 SELECT arr.size0 = 0 FROM TABLE;。
语法
参数
arr— 输入数组。Array(T)
返回值
对于空数组返回 1,对于非空数组返回 0 UInt8
示例
用法示例
emptyArrayDate
引入版本:v1.1
返回一个空的日期数组。
语法
参数
- 无。 返回值
一个空的日期数组。 Array(T)
示例
用法示例
emptyArrayDateTime
引入版本:v1.1
返回一个空的日期时间数组。
语法
参数
- 无。 返回值
一个空的日期时间数组。 Array(T)
示例
用法示例
emptyArrayFloat32
引入版本:v1.1
返回一个空的 Float32 数组。
语法
参数
- 无。 返回值
一个空的 Float32 数组。 Array(T)
示例
用法示例
emptyArrayFloat64
引入版本:v1.1
返回一个空的 Float64 数组。
语法
参数
- 无。 返回值
一个空的 Float64 数组。 Array(T)
示例
用法示例
emptyArrayInt16
引入版本:v1.1
返回一个空的 Int16 数组。
语法
参数
- 无。 返回值
一个空的 Int16 数组。 Array(T)
示例
用法示例
emptyArrayInt32
引入版本:v1.1
返回一个空的 Int32 数组。
语法
参数
- 无。 返回值
一个空的 Int32 数组。 Array(T)
示例
用法示例
emptyArrayInt64
引入版本:v1.1
返回一个空的 Int64 数组。
语法
参数
- 无。 返回值
一个空的 Int64 数组。 Array(T)
示例
用法示例
emptyArrayInt8
引入版本:v1.1
返回一个空的 Int8 数组。
语法
参数
- 无。 返回值
一个空的 Int8 数组。 Array(T)
示例
用法示例
emptyArrayString
引入版本:v1.1
返回一个空的字符串数组。
语法
参数
- 无。 返回值
一个空的字符串数组。 Array(T)
示例
用法示例
emptyArrayToSingle
引入版本:v1.1
接受一个空数组并返回一个元素为默认值的单元素数组。
语法
参数
arr— 一个空数组。Array(T)
返回值
一个值为数组默认类型的单一值的数组。 Array(T)
示例
基本示例
emptyArrayUInt16
引入版本:v1.1
返回一个空的 UInt16 数组。
语法
参数
- 无。 返回值
一个空的 UInt16 数组。 Array(T)
示例
用法示例
emptyArrayUInt32
引入版本:v1.1
返回一个空的 UInt32 数组。
语法
参数
- 无。 返回值
一个空的 UInt32 数组。 Array(T)
示例
用法示例
emptyArrayUInt64
引入版本:v1.1
返回一个空的 UInt64 数组。
语法
参数
- 无。 返回值
一个空的 UInt64 数组。 Array(T)
示例
用法示例
emptyArrayUInt8
引入版本:v1.1
返回一个空的 UInt8 数组。
语法
参数
- 无。 返回值
一个空的 UInt8 数组。 Array(T)
示例
用法示例
has
引入版本:v1.1
返回数组是否包含指定的元素。
语法
参数
arr— 源数组。Array(T)x— 要搜索的数组中的值。
返回值
如果数组包含指定元素,则返回 1,否则返回 0。 UInt8
示例
基本用法
未找到
hasAll
引入版本:v1.1
检查一个数组是否是另一个数组的子集。
- 空数组是任何数组的子集。
Null被视为一个值。- 两个数组中值的顺序没有关系。
语法
参数
返回值
- 如果
set包含subset中的所有元素,则返回1。 - 否则返回
0。
如果集合和子集元素没有共享通用超类型,将引发 NO_COMMON_TYPE 异常。
示例
空数组
包含 NULL 值的数组
包含不同类型值的数组
包含字符串值的数组
没有公共类型的数组
数组的数组
hasAny
引入版本:v1.1
检查两个数组是否有交集。
Null被视为一个值。- 两个数组中值的顺序没有关系。
语法
参数
返回值
- 如果
arr_x和arr_y至少有一个相似元素,则返回1。 - 否则返回
0。
如果两个数组的任一元素没有共享通用超类型,将引发 NO_COMMON_TYPE 异常。
示例
一个数组为空
包含 NULL 值的数组
包含不同类型值的数组
没有公共类型的数组
数组的数组
hasSubstr
引入版本:v20.6
检查所有 array2 的元素是否按完全相同的顺序出现在 array1 中。
因此,该函数仅在且仅在 array1 = prefix + array2 + suffix 时返回 1。
换句话说,函数将检查 array2 的所有元素是否如函数 hasAll 所示包含在 array1 中。
此外,它还会检查在两个数组中元素的顺序是否一致。
- 如果
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
示例
两个数组都是空的
包含 NULL 值的数组
包含不同类型值的数组
包含字符串的数组
有有效顺序的数组
有无效顺序的数组
数组的数组
没有公共类型的数组
indexOf
引入版本:v1.1
返回数组中值为 'x' 的第一个元素的索引(从 1 开始),如果它在数组中。如果数组不包含要搜索的值,则函数返回 0。
设置为 NULL 的元素作为普通值处理。
语法
参数
返回值
如果存在,则返回 arr 中第一个 x 的索引(从 1 编号)。否则返回 0。 UInt64
示例
基本示例
数组中包含 null
indexOfAssumeSorted
引入版本:v24.12
返回数组中值为 'x' 的第一个元素的索引(从 1 开始),如果它在数组中。如果数组不包含要搜索的值,则函数返回 0。
与 indexOf 函数不同,此函数假定数组按升序排序。如果数组未排序,则结果将是未定义的。
语法
参数
返回值
如果存在,则返回 arr 中第一个 x 的索引(从 1 开始)。否则返回 0。 UInt64
示例
基本示例
length
引入版本:v1.1
计算字符串或数组的长度。
- 对于字符串或固定字符串参数:计算字符串中的字节数。
- 对于数组参数:计算数组中的元素数量。
- 如果应用于固定字符串参数,该函数是常量表达式。
请注意,字符串中的字节数与 Unicode "代码点" 的数量不同,它与 Unicode "图形簇"(通常称为 "字符")的数量不同,它与可见字符串宽度的多少也不同。
字符串中可以有 ASCII NULL 字节,并且这些字节也会被计算在内。
语法
参数
x— 要计算字节数(对于字符串/固定字符串)或元素数量(对于数组)的值。String或FixedString或Array(T)
返回值
返回字符串/固定字符串 x 中的字节数/数组 x 中元素的数量 UInt64
示例
字符串示例
数组示例
constexpr 示例
unicode 示例
ascii_vs_utf8 示例
notEmpty
引入版本:v1.1
检查输入数组是否非空。
如果数组至少包含一个元素,则被视为非空数组。
通过启用 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
示例
用法示例
range
引入版本:v1.1
返回从 start 到 end - 1 的数字数组,按 step 递增。
支持的类型有:
-
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)
示例
用法示例
replicate
引入版本:v1.1
创建一个包含单个值的数组。
语法
参数
返回值
返回一个与 arr 长度相同的数组,填充值 x。 Array(T)
示例
用法示例
reverse
引入于: v1.1
反转输入数组中的元素顺序或输入字符串中的字符顺序。
语法
参数
返回值
返回一个数组或字符串,其元素或字符顺序被反转。
示例
反转数组
反转字符串
Distance functions
所有支持的函数在 distance functions documentation 中有描述。