跳到主要内容
跳到主要内容

元组函数

tuple

一个允许将多个列分组的函数。 对于类型为 T1, T2, ... 的列 C1, C2, ...,如果它们的名称是唯一的,并且可以视为未引用的标识符,则返回包含这些列的命名元组 Tuple(C1 T1, C2 T2, ...),否则返回 Tuple(T1, T2, ...)。执行此函数没有成本。 元组通常用作 IN 操作符参数的中间值,或用于创建 lambda 函数的形式参数列表。元组不能写入表中。

该函数实现了操作符 (x, y, ...)

语法

tupleElement

一个允许从元组中获取列的函数。

如果第二个参数是一个数字 index,则表示列索引,从 1 开始。如果第二个参数是字符串 name,则表示元素的名称。此外,我们可以提供第三个可选参数,当索引越界或名称没有元素时,返回默认值,而不是抛出异常。第二和第三个参数如果提供,则必须是常量。执行此函数没有成本。

该函数实现了操作符 x.indexx.name

语法

untuple

在调用位置执行 tuple 元素的语法替换。

结果列的名称是实现特定的并且可能会变化。请勿假定在 untuple 之后的特定列名称。

语法

您可以使用 EXCEPT 表达式在查询结果中跳过列。

参数

  • x — 一个 tuple 函数、列或元素元组。 Tuple

返回值

  • None.

示例

输入表:

使用 Tuple 类型列作为 untuple 函数参数的示例:

查询:

结果:

使用 EXCEPT 表达式的示例:

查询:

结果:

参考

tupleHammingDistance

返回两个相同大小的元组之间的 汉明距离

语法

参数

  • tuple1 — 第一个元组。 Tuple
  • tuple2 — 第二个元组。 Tuple

元组的元素类型应该相同。

返回值

  • 汉明距离。
备注

结果类型的计算方式与 算术函数 的计算一致,基于输入元组中元素的数量。

示例

查询:

结果:

可以与 MinHash 函数一起使用,检测半重复字符串:

结果:

tupleToNameValuePairs

将命名元组转换为 (名称, 值) 对的数组。对于 Tuple(a T, b T, ..., c T) 返回 Array(Tuple(String, T), ...) 其中 Strings 表示元组的命名字段,T 是与这些名称关联的值。元组中的所有值应该是同一类型。

语法

参数

  • tuple — 命名元组。 Tuple 具有任何类型的值。

返回值

示例

查询:

结果:

可以使用此函数将列转换为行:

结果:

如果将简单元组传递给该函数,ClickHouse 将使用值的索引作为它们的名称:

结果:

tupleNames

将元组转换为列名称的数组。对于 Tuple(a T, b T, ...) 形式的元组,它返回一个字符串数组,表示元组的命名列。如果元组元素没有显式名称,则将使用它们的索引作为列名称。

语法

参数

  • tuple — 命名元组。 Tuple 具有任何类型的值。

返回值

  • 一个包含字符串的数组。

类型: Array(Tuple(String, ...))。

示例

查询:

结果:

如果将简单元组传递给该函数,ClickHouse 将使用列的索引作为它们的名称:

结果:

tuplePlus

计算两个相同大小的元组的对应值的和。

语法

别名: vectorSum

参数

  • tuple1 — 第一个元组。 Tuple
  • tuple2 — 第二个元组。 Tuple

返回值

  • 和的元组。 Tuple

示例

查询:

结果:

tupleMinus

计算两个相同大小的元组的对应值的差。

语法

别名: vectorDifference

参数

  • tuple1 — 第一个元组。 Tuple
  • tuple2 — 第二个元组。 Tuple

返回值

  • 差的元组。 Tuple

示例

查询:

结果:

tupleMultiply

计算两个相同大小的元组的对应值的乘积。

语法

参数

  • tuple1 — 第一个元组。 Tuple
  • tuple2 — 第二个元组。 Tuple

返回值

  • 乘积的元组。 Tuple

示例

查询:

结果:

tupleDivide

计算两个相同大小的元组的对应值的除法。请注意,除以零将返回 inf

语法

参数

  • tuple1 — 第一个元组。 Tuple
  • tuple2 — 第二个元组。 Tuple

返回值

  • 除法结果的元组。 Tuple

示例

查询:

结果:

tupleNegate

计算元组值的否定。

语法

参数

返回值

  • 否定结果的元组。 Tuple

示例

查询:

结果:

tupleMultiplyByNumber

返回一个所有值都乘以一个数字的元组。

语法

参数

返回值

  • 乘法结果的元组。 Tuple

示例

查询:

结果:

tupleDivideByNumber

返回一个所有值都除以一个数字的元组。请注意,除以零将返回 inf

语法

参数

返回值

  • 除法结果的元组。 Tuple

示例

查询:

结果:

tupleConcat

合并作为参数传递的元组。

参数

  • tuples – 任意数量的 Tuple 类型参数。

示例

tupleIntDiv

执行一个分子元组和一个分母元组的整数除法,并返回一个商的元组。

语法

参数

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • tuple_div: 除数值的元组。 Tuple 的数值类型。

返回值

  • tuple_numtuple_div 的商的元组。 Tuple 的整数值。

实现细节

  • 如果 tuple_numtuple_div 包含非整数值,则对每个非整数分子或除数的结果通过四舍五入到最接近的整数来计算。
  • 除以 0 时将抛出错误。

示例

查询:

结果:

查询:

结果:

tupleIntDivOrZero

类似于 tupleIntDiv,它执行一个分子元组和一个分母元组的整数除法,并返回一个商的元组。它不会因除数为 0 而抛出错误,而是将商返回为 0。

语法

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • tuple_div: 除数值的元组。 Tuple 的数值类型。

返回值

  • tuple_numtuple_div 的商的元组。 Tuple 的整数值。
  • 对于除数为 0 的商返回 0。

实现细节

  • 如果 tuple_numtuple_div 包含非整数值,则对每个非整数分子或除数的结果通过四舍五入到最接近的整数来计算,类似于 tupleIntDiv

示例

查询:

结果:

tupleIntDivByNumber

对一个分子元组进行整数除法并以给定的除数返回一个商的元组。

语法

参数

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • div: 除数值。 Numeric 类型。

返回值

  • tuple_numdiv 的商的元组。 Tuple 的整数值。

实现细节

  • 如果 tuple_numdiv 包含非整数值,则对每个非整数分子或除数的结果通过四舍五入到最接近的整数来计算。
  • 除以 0 时将抛出错误。

示例

查询:

结果:

查询:

结果:

tupleIntDivOrZeroByNumber

类似于 tupleIntDivByNumber,它对一个分子元组进行整数除法并以给定的除数返回一个商的元组。它不会因除数为 0 而抛出错误,而是将商返回为 0。

语法

参数

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • div: 除数值。 Numeric 类型。

返回值

  • tuple_numdiv 的商的元组。 Tuple 的整数值。
  • 对于除数为 0 的商返回 0。

实现细节

  • 如果 tuple_numdiv 包含非整数值,则对每个非整数分子或除数的结果通过四舍五入到最接近的整数来计算,类似于 tupleIntDivByNumber

示例

查询:

结果:

查询:

结果:

tupleModulo

返回两个元组的模(余数)的元组。

语法

参数

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • tuple_div: 除数值的元组。 Tuple 的数值类型。

返回值

  • tuple_numtuple_div 之间除法的余数元组。 Tuple 的非零整数值。
  • 对于除以零将抛出错误。

示例

查询:

结果:

tupleModuloByNumber

返回一个元组的模(余数)与给定除数的除法结果。

语法

参数

  • tuple_num: 分子值的元组。 Tuple 的数值类型。
  • div: 除数值。 Numeric 类型。

返回值

  • tuple_numdiv 之间除法的余数元组。 Tuple 的非零整数值。
  • 对于除以零将抛出错误。

示例

查询:

结果:

flattenTuple

从嵌套的命名 input 元组返回一个扁平化的 output 元组。output 元组的元素是来自原始 input 元组的路径。例如: Tuple(a Int, Tuple(b Int, c Int)) -> Tuple(a Int, b Int, c Int)flattenTuple 可用于将 Object 类型的所有路径选择为单独的列。

语法

参数

  • input: 要扁平化的嵌套命名元组。 Tuple

返回值

  • 其元素是来自原始 input 的路径的 output 元组。 Tuple

示例

查询:

结果:

Distance functions

所有支持的函数在 距离函数文档 中进行了描述。