> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-fix-nav-issues.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Tuple 함수 문서

# Tuple 함수

<Note>
  아래 문서는 `system.functions` 시스템 테이블을 기반으로 생성됩니다.
</Note>

{/*AUTOGENERATED_START*/}

<div id="dotProduct">
  ## dotProduct
</div>

도입 버전: v21.11.0

두 벡터(크기가 같은 튜플 또는 배열)의 [내적](https://en.wikipedia.org/wiki/Dot_product)(스칼라 곱)을 계산합니다.
대응하는 원소별 곱의 합을 반환합니다.

**구문**

```sql theme={null}
dotProduct(vector1, vector2)
```

**별칭**: `scalarProduct`

**인수**

* `vector1` — 첫 번째 벡터입니다. [`Array(T)`](/ko/reference/data-types/array) 또는 [`Tuple(T)`](/ko/reference/data-types/tuple)
* `vector2` — 두 번째 벡터입니다. 첫 번째 벡터와 크기가 같아야 합니다. [`Array(T)`](/ko/reference/data-types/array) 또는 [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

두 벡터의 내적을 반환합니다. [`(U)Int*`](/ko/reference/data-types/int-uint), [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT dotProduct((1, 2), (3, 4))
```

```response title=Response theme={null}
11
```

<div id="flattenTuple">
  ## flattenTuple
</div>

도입 버전: v22.6.0

이름이 있는 중첩 튜플을 평탄화합니다.
반환된 튜플의 요소는 입력 튜플의 경로입니다.

**구문**

```sql theme={null}
flattenTuple(input)
```

**인수**

* `input` — 평탄화할 이름이 있는 중첩 튜플입니다. [`Tuple(n1 T1[, n2 T2, ... ])`](/ko/reference/data-types/tuple)

**반환 값**

원래 입력의 경로들이 요소로 들어 있는 출력 튜플을 반환합니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**예시**

**사용 예시**

```sql title=Query theme={null}
CREATE TABLE tab(t Tuple(a UInt32, b Tuple(c String, d UInt32))) ENGINE = MergeTree ORDER BY tuple();
INSERT INTO tab VALUES ((3, ('c', 4)));

SELECT flattenTuple(t) FROM tab;
```

```response title=Response theme={null}
┌─flattenTuple(t)┐
│ (3, 'c', 4)    │
└────────────────┘
```

<div id="tuple">
  ## tuple
</div>

도입 버전: v1.1.0

입력 인수를 묶어 튜플을 반환합니다.

타입이 T1, T2, ...인 컬럼 C1, C2, ...에 대해, 이름이 고유하고 따옴표 없는 식별자로 처리할 수 있으면 해당 컬럼을 포함하는 named Tuple(C1 T1, C2 T2, ...) 타입의 튜플을 반환하고, 그렇지 않으면 Tuple(T1, T2, ...)를 반환합니다. 이 함수의 실행 비용은 없습니다.
튜플은 일반적으로 IN 연산자의 인수에 대한 중간 값으로 사용되거나, 람다 함수의 형식 매개변수 목록을 만드는 데 사용됩니다. 튜플은 테이블에 저장할 수 없습니다.

이 함수는 연산자 `(x, y, ...)`를 구현합니다.

**구문**

```sql theme={null}
tuple([t1[, t2[ ...]])
```

**인수**

* 없음.

**반환 값**

**예시**

**일반적인 예**

```sql title=Query theme={null}
SELECT tuple(1, 2)
```

```response title=Response theme={null}
(1,2)
```

<div id="tupleConcat">
  ## tupleConcat
</div>

도입 버전: v23.8.0

인수로 전달된 튜플들을 결합합니다.

**구문**

```sql theme={null}
tupleConcat(tuple1[, tuple2, [...]])
```

**인수**

* `tupleN` — Tuple 타입 인수를 임의 개수로 받습니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**반환 값**

입력 튜플의 모든 요소를 포함하는 튜플을 반환합니다. [`Tuple(T)`](/ko/reference/data-types/tuple)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT tupleConcat((1, 2), ('a',), (true, false))
```

```response title=Response theme={null}
(1, 2, 'a', true, false)
```

<div id="tupleDivide">
  ## tupleDivide
</div>

도입 버전: v21.11.0

크기가 같은 두 튜플의 각 대응 요소를 나눈 값을 계산합니다.

<Note>
  0으로 나누면 `inf`를 반환합니다.
</Note>

**구문**

```sql theme={null}
tupleDivide(t1, t2)
```

**인수**

* `t1` — 첫 번째 튜플입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `t2` — 두 번째 튜플입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

나눗셈 결과를 담은 튜플을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleDivide((1, 2), (2, 3))
```

```response title=Response theme={null}
(0.5, 0.6666666666666666)
```

<div id="tupleDivideByNumber">
  ## tupleDivideByNumber
</div>

도입 버전: v21.11.0

모든 요소를 수로 나눈 튜플을 반환합니다.

<Note>
  0으로 나누면 `inf`를 반환합니다.
</Note>

**구문**

```sql theme={null}
tupleDivideByNumber(tuple, number)
```

**인수**

* `tuple` — 나눌 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `number` — 나눗수입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

각 요소를 나눈 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleDivideByNumber((1, 2), 0.5)
```

```response title=Response theme={null}
(2, 4)
```

<div id="tupleElement">
  ## tupleElement
</div>

도입 버전: v1.1.0

인덱스 또는 이름으로 튜플에서 요소를 추출합니다.

인덱스로 접근할 때는 1부터 시작하는 숫자 인덱스를 지정해야 합니다.
이름으로 접근할 때는 요소 이름을 문자열로 지정할 수 있습니다(이름이 지정된 Tuple에서만 작동함).

음수 인덱스도 지원합니다. 이 경우 끝에서부터 번호를 매긴 해당 요소를 선택합니다. 예를 들어 `tuple.-1`은 튜플의 마지막 요소입니다.

선택적 세 번째 인수는 기본값을 지정하며, 접근하려는 요소가 존재하지 않을 때 예외를 발생시키는 대신 이 값을 반환합니다.
모든 인수는 상수여야 합니다.

이 함수는 런타임 비용이 전혀 없으며 `x.index` 및 `x.name` 연산자를 구현합니다.

**구문**

```sql theme={null}
tupleElement(tuple, index|name[, default_value])
```

**인수**

* `tuple` — 튜플 또는 튜플의 배열입니다. [`Tuple(T)`](/ko/reference/data-types/tuple) 또는 [`Array(Tuple(T))`](/ko/reference/data-types/array)
* `index` — 1부터 시작하는 컬럼 인덱스입니다. [`const UInt8/16/32/64`](/ko/reference/data-types/int-uint)
* `name` — 요소의 이름입니다. [`const String`](/ko/reference/data-types/string)
* `default_value` — 인덱스가 범위를 벗어나거나 요소가 존재하지 않을 때 반환되는 기본값입니다. [`Any`](/ko/reference/data-types)

**반환 값**

지정된 인덱스 또는 이름에 해당하는 요소를 반환합니다. [`Any`](/ko/reference/data-types)

**예시**

**인덱스 접근**

```sql title=Query theme={null}
SELECT tupleElement((1, 'hello'), 2)
```

```response title=Response theme={null}
hello
```

**음수 인덱싱**

```sql title=Query theme={null}
SELECT tupleElement((1, 'hello'), -1)
```

```response title=Response theme={null}
hello
```

**table이 포함된 named tuple**

```sql title=Query theme={null}
CREATE TABLE example (values Tuple(name String, age UInt32)) ENGINE = Memory;
INSERT INTO example VALUES (('Alice', 30));
SELECT tupleElement(values, 'name') FROM example;
```

```response title=Response theme={null}
Alice
```

**기본값 사용 시**

```sql title=Query theme={null}
SELECT tupleElement((1, 2), 5, 'not_found')
```

```response title=Response theme={null}
not_found
```

**연산자 구문**

```sql title=Query theme={null}
SELECT (1, 'hello').2
```

```response title=Response theme={null}
hello
```

<div id="tupleHammingDistance">
  ## tupleHammingDistance
</div>

도입 버전: v21.1.0

크기가 같은 두 튜플 간의 [해밍 거리](https://en.wikipedia.org/wiki/Hamming_distance)를 반환합니다.

<Note>
  결과 유형은 입력 튜플의 요소 수에 따라 [산술 함수](/ko/reference/functions/regular-functions/arithmetic-functions)와 동일한 방식으로 결정됩니다.

  ```sql theme={null}
  SELECT
      toTypeName(tupleHammingDistance(tuple(0), tuple(0))) AS t1,
      toTypeName(tupleHammingDistance((0, 0), (0, 0))) AS t2,
      toTypeName(tupleHammingDistance((0, 0, 0), (0, 0, 0))) AS t3,
      toTypeName(tupleHammingDistance((0, 0, 0, 0), (0, 0, 0, 0))) AS t4,
      toTypeName(tupleHammingDistance((0, 0, 0, 0, 0), (0, 0, 0, 0, 0))) AS t5
  ```

  ```text theme={null}
  ┌─t1────┬─t2─────┬─t3─────┬─t4─────┬─t5─────┐
  │ UInt8 │ UInt16 │ UInt32 │ UInt64 │ UInt64 │
  └───────┴────────┴────────┴────────┴────────┘
  ```
</Note>

**구문**

```sql theme={null}
tupleHammingDistance(t1, t2)
```

**인수**

* `t1` — 첫 번째 튜플입니다. [`Tuple(*)`](/ko/reference/data-types/tuple)
* `t2` — 두 번째 튜플입니다. [`Tuple(*)`](/ko/reference/data-types/tuple)

**반환 값**

해밍 거리를 반환합니다. [`UInt8/16/32/64`](/ko/reference/data-types/int-uint)

**예시**

**사용 예시**

```sql title=Query theme={null}
SELECT tupleHammingDistance((1, 2, 3), (3, 2, 1))
```

```response title=Response theme={null}
2
```

**MinHash를 사용해 준중복 문자열 감지하기**

```sql title=Query theme={null}
SELECT tupleHammingDistance(wordShingleMinHash(string), wordShingleMinHashCaseInsensitive(string)) FROM (SELECT 'ClickHouse is a column-oriented database management system for online analytical processing of queries.' AS string)
```

```response title=Response theme={null}
2
```

<div id="tupleIntDiv">
  ## tupleIntDiv
</div>

도입된 버전: v23.8.0

분자 튜플과 분모 튜플에 대해 정수 나눗셈을 수행합니다. 몫으로 이루어진 튜플을 반환합니다.
두 튜플 중 하나라도 정수가 아닌 요소를 포함하면, 정수가 아닌 각 분자 또는 제수를 가장 가까운 정수로 반올림하여 결과를 계산합니다.
0으로 나누면 오류가 발생합니다.

**구문**

```sql theme={null}
tupleIntDiv(tuple_num, tuple_div)
```

**인수**

* `tuple_num` — 분자 값으로 이루어진 Tuple. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `tuple_div` — 제수 값으로 이루어진 Tuple. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

몫으로 이루어진 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleIntDiv((15, 10, 5), (5, 5, 5))
```

```response title=Response theme={null}
(3, 2, 1)
```

**소수 포함**

```sql title=Query theme={null}
SELECT tupleIntDiv((15, 10, 5), (5.5, 5.5, 5.5))
```

```response title=Response theme={null}
(2, 1, 0)
```

<div id="tupleIntDivByNumber">
  ## tupleIntDivByNumber
</div>

도입 버전: v23.8.0

분자 튜플을 지정된 분모로 정수 나눗셈하여 몫의 튜플을 반환합니다.
입력 매개변수 중 하나라도 정수가 아닌 요소를 포함하면, 정수가 아닌 각 분자 또는 제수를 가장 가까운 정수로 반올림한 뒤 결과를 계산합니다.
0으로 나누면 오류가 발생합니다.

**구문**

```sql theme={null}
tupleIntDivByNumber(tuple_num, div)
```

**인수**

* `tuple_num` — 분자 값으로 이루어진 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `div` — 제수 값입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

몫으로 이루어진 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleIntDivByNumber((15, 10, 5), 5)
```

```response title=Response theme={null}
(3, 2, 1)
```

**소수가 포함된 경우**

```sql title=Query theme={null}
SELECT tupleIntDivByNumber((15.2, 10.7, 5.5), 5.8)
```

```response title=Response theme={null}
(2, 1, 0)
```

<div id="tupleIntDivOrZero">
  ## tupleIntDivOrZero
</div>

도입 버전: v23.8.0

[`tupleIntDiv`](#tupleIntDiv)와 마찬가지로 분자 튜플과 분모 튜플의 정수 나눗셈을 수행하여 몫의 튜플을 반환합니다.
0으로 나누는 경우에는 예외를 발생시키는 대신 몫을 0으로 반환합니다.
둘 중 하나의 튜플에 정수가 아닌 요소가 포함된 경우, 각 정수가 아닌 분자 또는 제수를 가장 가까운 정수로 반올림하여 결과를 계산합니다.

**구문**

```sql theme={null}
tupleIntDivOrZero(tuple_num, tuple_div)
```

**인수**

* `tuple_num` — 분자 값의 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `tuple_div` — 제수 값의 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

몫으로 이루어진 Tuple을 반환합니다. 제수가 0인 항목의 몫은 0을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**제수가 0인 경우**

```sql title=Query theme={null}
SELECT tupleIntDivOrZero((5, 10, 15), (0, 0, 0))
```

```response title=Response theme={null}
(0, 0, 0)
```

<div id="tupleIntDivOrZeroByNumber">
  ## tupleIntDivOrZeroByNumber
</div>

도입 버전: v23.8.0

[`tupleIntDivByNumber`](#tupleIntDivByNumber)와 마찬가지로, 주어진 분모로 분자 튜플에 대해 정수 나눗셈을 수행하고 몫으로 이루어진 튜플을 반환합니다.
분모가 0이어도 오류를 발생시키지 않으며, 대신 몫을 0으로 반환합니다.
튜플이나 `div`에 정수가 아닌 요소가 포함되어 있으면, 정수가 아닌 각 분자 또는 분모를 가장 가까운 정수로 반올림한 뒤 결과를 계산합니다.

**구문**

```sql theme={null}
tupleIntDivOrZeroByNumber(tuple_num, div)
```

**인수**

* `tuple_num` — 분자 값의 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `div` — 제수 값입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

제수가 `0`인 경우 해당 몫을 `0`으로 하는 몫의 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleIntDivOrZeroByNumber((15, 10, 5), 5)
```

```response title=Response theme={null}
(3, 2, 1)
```

**제수가 0일 때**

```sql title=Query theme={null}
SELECT tupleIntDivOrZeroByNumber((15, 10, 5), 0)
```

```response title=Response theme={null}
(0, 0, 0)
```

<div id="tupleMinus">
  ## tupleMinus
</div>

도입 버전: v21.11.0

크기가 같은 두 튜플에서 대응하는 요소들의 차이를 계산합니다.

**구문**

```sql theme={null}
tupleMinus(t1, t2)
```

**별칭**: `vectorDifference`

**인수**

* `t1` — 첫 번째 Tuple. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `t2` — 두 번째 Tuple. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

뺄셈 결과가 들어 있는 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleMinus((1, 2), (2, 3))
```

```response title=Response theme={null}
(-1, -1)
```

<div id="tupleModulo">
  ## tupleModulo
</div>

v23.8.0에서 도입됨

두 튜플의 나눗셈 연산에서 각 요소의 나머지(모듈로)로 이루어진 튜플을 반환합니다.

**구문**

```sql theme={null}
tupleModulo(tuple_num, tuple_mod)
```

**인수**

* `tuple_num` — 분자 값으로 이루어진 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `tuple_mod` — 제수 값으로 이루어진 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

나눗셈의 나머지 값으로 이루어진 Tuple을 반환합니다. 0으로 나누면 오류가 발생합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleModulo((15, 10, 5), (5, 3, 2))
```

```response title=Response theme={null}
(0, 1, 1)
```

<div id="tupleModuloByNumber">
  ## tupleModuloByNumber
</div>

Introduced in: v23.8.0

튜플을 지정된 제수로 나눈 각 나머지로 구성된 튜플을 반환합니다.

**구문**

```sql theme={null}
tupleModuloByNumber(tuple_num, div)
```

**인수**

* `tuple_num` — 분자 요소로 이루어진 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `div` — 제수 값입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

나눗셈의 나머지로 이루어진 Tuple을 반환합니다. 0으로 나누면 오류가 발생합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleModuloByNumber((15, 10, 5), 2)
```

```response title=Response theme={null}
(1, 0, 1)
```

<div id="tupleMultiply">
  ## tupleMultiply
</div>

Introduced in: v21.11.0

동일한 크기의 두 튜플의 각 대응 요소를 곱한 값을 계산합니다.

**구문**

```sql theme={null}
tupleMultiply(t1, t2)
```

**인수**

* `t1` — 첫 번째 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `t2` — 두 번째 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

곱셈 결과를 담은 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleMultiply((1, 2), (2, 3))
```

```response title=Response theme={null}
(2, 6)
```

<div id="tupleMultiplyByNumber">
  ## tupleMultiplyByNumber
</div>

도입 버전: v21.11.0

모든 요소에 수를 곱한 튜플을 반환합니다.

**구문**

```sql theme={null}
tupleMultiplyByNumber(tuple, number)
```

**인수**

* `tuple` — 곱할 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `number` — 곱하는 값입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

각 요소에 곱셈이 적용된 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleMultiplyByNumber((1, 2), -2.1)
```

```response title=Response theme={null}
(-2.1, -4.2)
```

<div id="tupleNames">
  ## tupleNames
</div>

도입 버전: v24.8.0

튜플을 컬럼 이름 배열로 변환합니다. `Tuple(a T, b T, ...)` 형식의 튜플에 대해서는 튜플에서 이름이 지정된 컬럼을 나타내는 문자열 배열을 반환합니다. 튜플 요소에 명시적인 이름이 없으면 해당 인덱스를 대신 컬럼 이름으로 사용합니다.

**구문**

```sql theme={null}
tupleNames(tuple)
```

**인수**

* 없음.

**반환 값**

**예시**

**일반적인 사용**

```sql title=Query theme={null}
SELECT tupleNames(tuple(1 as a, 2 as b))
```

```response title=Response theme={null}
['a','b']
```

<div id="tupleNegate">
  ## tupleNegate
</div>

도입 버전: v21.11.0

튜플 요소의 음수를 계산합니다.

**구문**

```sql theme={null}
tupleNegate(t)
```

**인수**

* `t` — 음수화할 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

음수화 결과가 포함된 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tupleNegate((1, 2))
```

```response title=Response theme={null}
(-1, -2)
```

<div id="tuplePlus">
  ## tuplePlus
</div>

도입 버전: v21.11.0

크기가 같은 두 튜플의 대응하는 요소를 더한 값을 계산합니다.

**구문**

```sql theme={null}
tuplePlus(t1, t2)
```

**별칭**: `vectorSum`

**인수**

* `t1` — 첫 번째 튜플. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `t2` — 두 번째 튜플. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**반환 값**

입력된 튜플 인수에서 같은 위치의 원소끼리 합한 결과를 담은 튜플을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tuplePlus((1, 2), (2, 3))
```

```response title=Response theme={null}
(3, 5)
```

<div id="tuplePositiveModuloByNumber">
  ## tuplePositiveModuloByNumber
</div>

도입 버전: v26.4.0

튜플과 지정된 제수로 나눈 연산의 양의 모듈로(나머지)로 이루어진 튜플을 반환합니다.
tupleModuloByNumber와 달리 결과는 항상 0 이상입니다.

**구문**

```sql theme={null}
tuplePositiveModuloByNumber(tuple_num, div)
```

**인수**

* `tuple_num` — 분자 값으로 이루어진 Tuple입니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)
* `div` — 제수 값입니다. [`(U)Int*`](/ko/reference/data-types/int-uint) 또는 [`Float*`](/ko/reference/data-types/float) 또는 [`Decimal`](/ko/reference/data-types/decimal)

**반환 값**

음수가 아닌 나머지로 이루어진 Tuple을 반환합니다. [`Tuple((U)Int*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Float*)`](/ko/reference/data-types/tuple) 또는 [`Tuple(Decimal)`](/ko/reference/data-types/tuple)

**예시**

**기본 사용법**

```sql title=Query theme={null}
SELECT tuplePositiveModuloByNumber((15, 10, 5), 2)
```

```response title=Response theme={null}
(1, 0, 1)
```

<div id="tupleToNameValuePairs">
  ## tupleToNameValuePairs
</div>

도입 버전: v21.9.0

튜플을 `(name, value)` 쌍으로 이루어진 배열로 변환합니다.
예를 들어, 튜플 `Tuple(n1 T1, n2 T2, ...)`는 `Array(Tuple('n1', T1), Tuple('n2', T2), ...)`로 변환됩니다.
튜플의 모든 값은 동일한 타입이어야 합니다.

**구문**

```sql theme={null}
tupleToNameValuePairs(tuple)
```

**인수**

* `tuple` — 임의의 타입 값으로 이루어진 named tuple입니다. [`Tuple(n1 T1[, n2 T2, ...])`](/ko/reference/data-types/tuple)

**반환 값**

`(name, value)` 쌍으로 구성된 배열을 반환합니다. [`Array(Tuple(String, T))`](/ko/reference/data-types/array)

**예시**

**Named tuple**

```sql title=Query theme={null}
SELECT tupleToNameValuePairs(tuple(1593 AS user_ID, 2502 AS session_ID))
```

```response title=Response theme={null}
[('1', 1593), ('2', 2502)]
```

**이름 없는 튜플**

```sql title=Query theme={null}
SELECT tupleToNameValuePairs(tuple(3, 2, 1))
```

```response title=Response theme={null}
[('1', 3), ('2', 2), ('3', 1)]
```

<div id="untuple">
  ## untuple
</div>

호출 위치에서 [튜플](/ko/reference/data-types/tuple) 요소를 구문 수준에서 치환합니다.

결과 컬럼의 이름은 구현에 따라 달라질 수 있으며, 이후 변경될 수 있습니다. `untuple` 이후의 특정 컬럼 이름을 가정하지 마십시오.

**구문**

```sql theme={null}
untuple(x)
```

`EXCEPT` 표현식을 사용하여 쿼리 결과에서 컬럼을 제외할 수 있습니다.

**인수**

* `x` — `tuple` 함수, 컬럼 또는 요소로 이루어진 튜플입니다. [Tuple](/ko/reference/data-types/tuple).

**반환 값**

* 없음.

**예시**

입력 테이블:

```text theme={null}
┌─key─┬─v1─┬─v2─┬─v3─┬─v4─┬─v5─┬─v6────────┐
│   1 │ 10 │ 20 │ 40 │ 30 │ 15 │ (33,'ab') │
│   2 │ 25 │ 65 │ 70 │ 40 │  6 │ (44,'cd') │
│   3 │ 57 │ 30 │ 20 │ 10 │  5 │ (55,'ef') │
│   4 │ 55 │ 12 │  7 │ 80 │ 90 │ (66,'gh') │
│   5 │ 30 │ 50 │ 70 │ 25 │ 55 │ (77,'kl') │
└─────┴────┴────┴────┴────┴────┴───────────┘
```

`Tuple`형 컬럼을 `untuple` 함수의 매개변수로 사용하는 예시:

```sql title="Query" theme={null}
SELECT untuple(v6) FROM kv;
```

```text title="Response" theme={null}
┌─_ut_1─┬─_ut_2─┐
│    33 │ ab    │
│    44 │ cd    │
│    55 │ ef    │
│    66 │ gh    │
│    77 │ kl    │
└───────┴───────┘
```

`EXCEPT` 표현식 사용 예시:

```sql title="Query" theme={null}
SELECT untuple((* EXCEPT (v2, v3),)) FROM kv;
```

```text title="Response" theme={null}
┌─key─┬─v1─┬─v4─┬─v5─┬─v6────────┐
│   1 │ 10 │ 30 │ 15 │ (33,'ab') │
│   2 │ 25 │ 40 │  6 │ (44,'cd') │
│   3 │ 57 │ 10 │  5 │ (55,'ef') │
│   4 │ 55 │ 80 │ 90 │ (66,'gh') │
│   5 │ 30 │ 25 │ 55 │ (77,'kl') │
└─────┴────┴────┴────┴───────────┘
```

<div id="distance-functions">
  ## 거리 함수
</div>

지원되는 모든 함수는 [거리 함수 문서](/ko/reference/functions/regular-functions/distance-functions)에 설명되어 있습니다.
