> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8c05c8a2.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

2 つのベクトル (同じ長さのタプルまたは配列) の [内積](https://en.wikipedia.org/wiki/Dot_product) (スカラー積) を計算します。
対応する要素同士の積の総和を返します。

**構文**

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

**別名**: `scalarProduct`

**引数**

* `vector1` — 1つ目のベクトル。[`Array(T)`](/ja/reference/data-types/array) または [`Tuple(T)`](/ja/reference/data-types/tuple)
* `vector2` — 2つ目のベクトル。1つ目のベクトルと同じサイズである必要があります。[`Array(T)`](/ja/reference/data-types/array) または [`Tuple(T)`](/ja/reference/data-types/tuple)

**戻り値**

2つのベクトルの内積を返します。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/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, ... ])`](/ja/reference/data-types/tuple)

**戻り値**

元の入力からのパスを要素とする出力タプルを返します。[`Tuple(T)`](/ja/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, ... に対し、それらの名前が一意で、かつ引用符なしの識別子として扱える場合は、それらのカラムを含む名前付き 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)`](/ja/reference/data-types/tuple)

**戻り値**

入力タプルのすべての要素を含むタプルを返します。[`Tuple(T)`](/ja/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

同じサイズの2つ以上のタプルに対して、左から右の順に要素ごとの除算を行います。

<Note>
  ゼロで除算した場合は `inf` が返されます。
</Note>

**構文**

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

**引数**

* `t1` — 最初の入力Tuple。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 追加の入力Tupleを1つ以上指定します。すべてのTupleは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

要素ごとの商を含むTupleを返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2つのTuple**

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

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

**3つのタプル**

```sql title=Query theme={null}
SELECT tupleDivide((100.0, 60.0), (5.0, 3.0), (2.0, 4.0))
```

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

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

導入バージョン: v21.11.0

すべての要素を数値で割ったタプルを返します。

<Note>
  ゼロで除算すると `inf` を返します。
</Note>

**構文**

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

**引数**

* `tuple` — 除算対象の タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `number` — 除数。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

各要素を除算した タプル を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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.-1` はタプルの最後の要素です。

省略可能な第 3 引数では、アクセスした要素が存在しない場合に、例外をスローする代わりに返すデフォルト値を指定します。
すべての引数は定数でなければなりません。

この関数のランタイムコストはゼロで、演算子 `x.index` と `x.name` を実装しています。

**構文**

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

**引数**

* `tuple` — タプル、またはタプルの配列。[`Tuple(T)`](/ja/reference/data-types/tuple) または [`Array(Tuple(T))`](/ja/reference/data-types/array)
* `index` — 1 から始まるカラムのインデックス。[`const UInt8/16/32/64`](/ja/reference/data-types/int-uint)
* `name` — 要素名。[`const String`](/ja/reference/data-types/string)
* `default_value` — インデックスが範囲外であるか、要素が存在しない場合に返されるデフォルト値。[`Any`](/ja/reference/data-types/index)

**戻り値**

指定したインデックスまたは名前の要素を返します。[`Any`](/ja/reference/data-types/index)

**例**

**インデックスアクセス**

```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
```

**テーブル付きの名前付きタプル**

```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

同じサイズの 2 つのタプル間の[ハミング距離](https://en.wikipedia.org/wiki/Hamming_distance)を返します。

<Note>
  結果の型は、入力タプルの要素数に基づいて、[算術関数](/ja/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` — 1 番目のタプル。 [`Tuple(*)`](/ja/reference/data-types/tuple)
* `t2` — 2 番目のタプル。 [`Tuple(*)`](/ja/reference/data-types/tuple)

**戻り値**

ハミング距離を返します。 [`UInt8/16/32/64`](/ja/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

同じサイズの2つ以上のタプルに対して、左から右の順に要素ごとの整数除算を行います。結果として、商からなるタプルを返します。
いずれかのタプルに整数以外の要素が含まれる場合は、整数でない各被除数または除数を最も近い整数に丸めて結果を計算します。
0 で除算すると、例外がスローされます。

**構文**

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

**引数**

* `t1` — 最初の入力タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 追加の入力タプルを1つ以上。すべてのタプルは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

整数の商を要素とするタプルを返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2つのタプル**

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

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

**Decimal型では**

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

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

**3つのタプル**

```sql title=Query theme={null}
SELECT tupleIntDiv((120, 60), (4, 3), (2, 4))
```

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

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

導入バージョン: v23.8.0

分子のタプルを指定された分母で整数除算し、商のタプルを返します。
入力引数のいずれかに整数以外の要素が含まれている場合は、整数でない各分子または除数を最も近い整数に丸めて結果を計算します。
0 で除算した場合はエラーがスローされます。

**構文**

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

**引数**

* `tuple_num` — 分子の値からなる Tuple。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) or [`Tuple(Float*)`](/ja/reference/data-types/tuple) or [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `div` — 除数の値。[`(U)Int*`](/ja/reference/data-types/int-uint) or [`Float*`](/ja/reference/data-types/float) or [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

商からなる Tuple を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) or [`Tuple(Float*)`](/ja/reference/data-types/tuple) or [`Tuple(Decimal)`](/ja/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) と同様に、同じサイズの 2 つ以上のタプルに対して、左から右に要素ごとの整数除算を行います。
0 で除算した場合は、例外をスローする代わりにその要素について 0 を返します。
いずれかのタプルに整数以外の要素が含まれている場合は、各非整数の分子または除数を最も近い整数に丸めて結果を計算します。

**構文**

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

**引数**

* `t1` — 最初の入力 Tuple。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 1 つ以上の追加の入力 Tuple。すべての Tuple は同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

整数の商からなる Tuple を返します。除数が 0 である要素については 0 を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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)
```

**3つのタプル**

```sql title=Query theme={null}
SELECT tupleIntDivOrZero((120, 60), (4, 3), (2, 4))
```

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

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

導入バージョン: v23.8.0

[`tupleIntDivByNumber`](#tupleIntDivByNumber) と同様に、分子のタプルを指定した分母で整数除算し、商のタプルを返します。
除数が 0 の場合でもエラーは発生させず、代わりに商として 0 を返します。
タプルまたは分母に整数以外の要素が含まれている場合は、整数でない各分子または除数を最も近い整数に丸めて結果を計算します。

**構文**

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

**引数**

* `tuple_num` — 分子の値からなる Tuple。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) or [`Tuple(Float*)`](/ja/reference/data-types/tuple) or [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `div` — 除数の値。[`(U)Int*`](/ja/reference/data-types/int-uint) or [`Float*`](/ja/reference/data-types/float) or [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

除数が `0` である商を `0` とした、商の Tuple を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) or [`Tuple(Float*)`](/ja/reference/data-types/tuple) or [`Tuple(Decimal)`](/ja/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

同じサイズの2つ以上のタプルについて、左から右の順に、対応する要素同士の差を計算します。

**構文**

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

**別名**: `vectorDifference`

**引数**

* `t1` — 1番目の入力タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 2番目以降の入力タプルを1つ以上指定します。すべてのタプルは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

各要素ごとの差分を含むタプルを返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2つのタプル**

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

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

**3つのタプル**

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

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

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

導入バージョン: v23.8.0

同じサイズの2つ以上のタプル同士を左から右の順に割り算し、各要素ごとの剰余をまとめたタプルを返します。

**構文**

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

**引数**

* `t1` — 最初の入力タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 追加の入力タプルを 1 つ以上。すべてのタプルは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

要素ごとの剰余からなるタプルを返します。0 による除算の場合は例外がスローされます。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2 つのタプル**

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

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

**3つのタプル**

```sql title=Query theme={null}
SELECT tupleModulo((10, 20), (7, 9), (3, 5))
```

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

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

導入バージョン: v23.8.0

タプルの各要素を指定された除数で割ったときの剰余 (余り) からなるタプルを返します。

**構文**

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

**引数**

* `tuple_num` — 分子要素のタプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `div` — 除数の値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

除算の余りからなるタプルを返します。ゼロ除算の場合はエラーがスローされます。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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>

導入バージョン: v21.11.0

同じサイズの2つ以上のタプルの要素ごとの積を計算します。

**構文**

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

**引数**

* `t1` — 1つ目の入力タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 2つ目以降の入力タプルを1つ以上指定します。すべてのタプルは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

要素ごとの積を格納したタプルを返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2つのタプル**

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

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

**3つのタプル**

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

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

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

導入バージョン: v21.11.0

すべての要素に数値を乗算したタプルを返します。

**構文**

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

**引数**

* `tuple` — 乗算対象の タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `number` — 乗数。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

要素が乗算された タプル を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

符号反転した結果の タプル を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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

同じサイズの2つ以上のタプルの要素ごとの合計を計算します。

**構文**

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

**別名**: `vectorSum`

**引数**

* `t1` — 1番目の入力タプル。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `t2, ..., tN` — 追加の入力タプルを1つ以上。すべてのタプルは同じサイズである必要があります。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**戻り値**

要素ごとの和を含むタプルを返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)

**例**

**2つのタプル**

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

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

**3つのタプル**

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

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

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

導入バージョン: v26.4.0

タプルの各要素を指定した除数で割ったときの正の剰余からなるタプルを返します。
tupleModuloByNumber とは異なり、結果は常に非負になります。

**構文**

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

**引数**

* `tuple_num` — 分子の値からなる Tuple。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/reference/data-types/tuple)
* `div` — 除数の値。[`(U)Int*`](/ja/reference/data-types/int-uint) または [`Float*`](/ja/reference/data-types/float) または [`Decimal`](/ja/reference/data-types/decimal)

**戻り値**

非負の剰余からなる Tuple を返します。[`Tuple((U)Int*)`](/ja/reference/data-types/tuple) または [`Tuple(Float*)`](/ja/reference/data-types/tuple) または [`Tuple(Decimal)`](/ja/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` — 任意の型の値を含む名前付きタプル。[`Tuple(n1 T1[, n2 T2, ...])`](/ja/reference/data-types/tuple)

**戻り値**

`(name, value)` のペアからなる配列を返します。[`Array(Tuple(String, T))`](/ja/reference/data-types/array)

**例**

**名前付きタプル**

```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>

呼び出し箇所で、[tuple](/ja/reference/data-types/tuple) の要素を構文的に置き換えます。

結果のカラム名は実装依存で、変更される可能性があります。`untuple` の後で特定のカラム名を前提にしないでください。

**構文**

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

`EXCEPT` 式を使用すると、クエリ結果からカラムを除外できます。

**引数**

* `x` — `tuple` 関数、カラム、または要素のタプル。[Tuple](/ja/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>

サポートされているすべての関数については、[距離関数のドキュメント](/ja/reference/functions/regular-functions/distance-functions)を参照してください。
