> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-8a08bda2.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>
  0 で除算すると `inf` が返されます。
</Note>

**構文**

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

**引数**

* `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` — 2 番目のタプル。[`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 tupleDivide((1, 2), (2, 3))
```

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

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

**戻り値**

指定したインデックスまたは名前の要素を返します。[`Any`](/ja/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
```

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

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

分子のタプルと分母のタプルに対して整数除算を実行し、商のタプルを返します。
いずれかのタプルに非整数の要素が含まれている場合は、各非整数の分子または除数を最も近い整数に丸めて結果を計算します。
0 で除算するとエラーが発生します。

**構文**

```sql theme={null}
tupleIntDiv(tuple_num, tuple_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)
* `tuple_div` — 除数の値からなる 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)

**例**

**基本的な使い方**

```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*)`](/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) と同様に、分子のタプルと分母のタプルに対して整数除算を行い、商のタプルを返します。
0 で除算した場合は、例外をスローする代わりに商として 0 を返します。
いずれかのタプルに整数以外の要素が含まれている場合は、各非整数の分子または除数を最も近い整数に丸めて結果を計算します。

**構文**

```sql theme={null}
tupleIntDivOrZero(tuple_num, tuple_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)
* `tuple_div` — 除数の値からなる 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)
```

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

**別名**: `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` — 2 つ目のタプル。[`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 tupleMinus((1, 2), (2, 3))
```

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

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

導入バージョン: v23.8.0

2つのタプルの除算で得られる剰余 (modulo) からなるタプルを返します。

**構文**

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

**引数**

* `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)
* `tuple_mod` — 法の値からなる 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 による除算ではエラーがスローされます。[`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 tupleModulo((15, 10, 5), (5, 3, 2))
```

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

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

**引数**

* `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` — 2 つ目のタプル。[`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 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((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)
```

**別名**: `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` — 2つ目のタプル。[`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 tuplePlus((1, 2), (2, 3))
```

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

<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)を参照してください。
