> ## 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 Map 関数のドキュメント

# Map 関数

{/*AUTOGENERATED_START*/}

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

導入バージョン: v23.4.0

任意の文字列からキー・バリューペアを抽出します。文字列はキー・バリューペア形式に完全に準拠している必要はありません。

ノイズ (例：ログファイル) を含む場合があります。解釈するキー・バリューペアのフォーマットは、関数の引数を使用して指定する必要があります。

キー・バリューペアは、キーの後に `key_value_delimiter` と値が続く形式で構成されます。クォートされたキーと値もサポートされています。キー・バリューペアは、ペアの区切り文字で区切る必要があります。

**構文**

```sql theme={null}
extractKeyValuePairs(data, [key_value_delimiter], [pair_delimiter], [quoting_character])
```

**引数**

* `data` - キー・バリューのペアの抽出元となる文字列。[String](/ja/reference/data-types/string) または [FixedString](/ja/reference/data-types/fixedstring)。
  * `key_value_delimiter` - キーと値の間の区切り文字として使用する文字。デフォルトは `:` です。[String](/ja/reference/data-types/string) または [FixedString](/ja/reference/data-types/fixedstring)。
  * `pair_delimiters` - ペア間の区切り文字として使用する文字の集合。デフォルトは `\space`、`,`、`;` です。[String](/ja/reference/data-types/string) または [FixedString](/ja/reference/data-types/fixedstring)。
  * `quoting_character` - クォート文字として使用する文字。デフォルトは `"` です。[String](/ja/reference/data-types/string) または [FixedString](/ja/reference/data-types/fixedstring)。
  * `unexpected_quoting_character_strategy` - `read_key` フェーズおよび `read_value` フェーズ中に、想定外の位置に現れたクォート文字を処理するための戦略。設定可能な値: `invalid`、`accept`、`promote`。`invalid` はキー/値を破棄し、`WAITING_KEY` 状態に戻ります。`accept` はそれを通常の文字として扱います。`promote` は `READ_QUOTED_{KEY/VALUE}` 状態に遷移し、次の文字から開始します。デフォルト値は `INVALID` です

**戻り値**

* Map(String, String) 形式の、抽出されたキー・バリューのペア。

**例**

クエリ:

**シンプルな例**

```sql theme={null}
arthur :) select extractKeyValuePairs('name:neymar, age:31 team:psg,nationality:brazil') as kv

            SELECT extractKeyValuePairs('name:neymar, age:31 team:psg,nationality:brazil') as kv

            Query id: f9e0ca6f-3178-4ee2-aa2c-a5517abb9cee

            ┌─kv──────────────────────────────────────────────────────────────────────┐
            │ {'name':'neymar','age':'31','team':'psg','nationality':'brazil'}        │
            └─────────────────────────────────────────────────────────────────────────┘
```

**クォート文字としてのシングルクォート**

```sql theme={null}
arthur :) select extractKeyValuePairs('name:\'neymar\';\'age\':31;team:psg;nationality:brazil,last_key:last_value', ':', ';,', '\'') as kv

            SELECT extractKeyValuePairs('name:\'neymar\';\'age\':31;team:psg;nationality:brazil,last_key:last_value', ':', ';,', '\'') as kv

            Query id: 0e22bf6b-9844-414a-99dc-32bf647abd5e

            ┌─kv───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
            │ {'name':'neymar','age':'31','team':'psg','nationality':'brazil','last_key':'last_value'}                                 │
            └──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
```

unexpected\_quoting\_character\_strategy の例:

unexpected\_quoting\_character\_strategy=invalid

```sql theme={null}
SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'INVALID') as kv;
```

```text theme={null}
┌─kv────────────────┐
            │ {'abc':'5'}  │
            └───────────────────┘
```

```sql theme={null}
SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'INVALID') as kv;
```

```text theme={null}
┌─kv──┐
            │ {}  │
            └─────┘
```

unexpected\_quoting\_character\_strategy=accept

```sql theme={null}
SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'ACCEPT') as kv;
```

```text theme={null}
┌─kv────────────────┐
            │ {'name"abc':'5'}  │
            └───────────────────┘
```

```sql theme={null}
            SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'ACCEPT') as kv;
```

```text theme={null}
            ┌─kv─────────────────┐
            │ {'name"abc"':'5'}  │
            └────────────────────┘
```

unexpected\_quoting\_character\_strategy=promote

```sql theme={null}
            SELECT extractKeyValuePairs('name"abc:5', ':', ' ,;', '\"', 'PROMOTE') as kv;
```

```text theme={null}
            ┌─kv──┐
            │ {}  │
            └─────┘
```

```sql theme={null}
            SELECT extractKeyValuePairs('name"abc":5', ':', ' ,;', '\"', 'PROMOTE') as kv;
```

```text theme={null}
            ┌─kv───────────┐
            │ {'abc':'5'}  │
            └──────────────┘
```

**エスケープシーケンス非対応の場合**

```sql theme={null}
            arthur :) select extractKeyValuePairs('age:a\\x0A\\n\\0') as kv

            SELECT extractKeyValuePairs('age:a\\x0A\\n\\0') AS kv

            Query id: e9fd26ee-b41f-4a11-b17f-25af6fd5d356

            ┌─kv────────────────────┐
            │ {'age':'a\\x0A\\n\\0'} │
            └───────────────────────┘
```

**構文**

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

**別名**: `str_to_map`, `mapFromString`

**引数**

* なし。

**戻り値**

**例**

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

導入バージョン: v23.4.0

`extractKeyValuePairs` と同じですが、エスケープに対応しています。

サポートされるエスケープシーケンス: `\x`, `\N`, `\a`, `\b`, `\e`, `\f`, `\n`, `\r`, `\t`, `\v`, `\0`。
標準以外のエスケープシーケンスは、次のいずれかでない限り、バックスラッシュを含めてそのまま返されます。
`\\`, `'`, `"`, `backtick`, `/`, `=` または ASCII 制御文字 (`c <= 31`)。

この関数は、事前エスケープや事後エスケープが適さないケースで役立ちます。たとえば、次の
入力文字列を考えます: `a: "aaaa\"bbb"`。期待される出力は `a: aaaa\"bbbb` です。

* 事前エスケープ: 事前にエスケープすると、出力は `a: "aaaa"bbb"` になり、その後 `extractKeyValuePairs` は `a: aaaa` を出力します
  * 事後エスケープ: `extractKeyValuePairs` は `a: aaaa\` を出力し、事後エスケープしてもそのまま保持されます。

先頭のエスケープシーケンスは、キーではスキップされ、値では無効と見なされます。

**エスケープシーケンスのサポートを有効にした場合のエスケープシーケンス**

```sql theme={null}
            arthur :) select extractKeyValuePairsWithEscaping('age:a\\x0A\\n\\0') as kv

            SELECT extractKeyValuePairsWithEscaping('age:a\\x0A\\n\\0') AS kv

            Query id: 44c114f0-5658-4c75-ab87-4574de3a1645

            ┌─kv───────────────┐
            │ {'age':'a\n\n\0'} │
            └──────────────────┘
```

**構文**

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

**引数**

* なし。

**戻り値**

**例**

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

導入バージョン: v21.1.0

キー・バリューのペアから `Map(key, value)` 型の値を作成します。

**構文**

```sql theme={null}
map(key1, value1[, key2, value2, ...])
```

**引数**

* `key_n` — map のエントリのキー。[`Any`](/ja/reference/data-types)
* `value_n` — map のエントリの値。[`Any`](/ja/reference/data-types)

**戻り値**

キーと値のペアを含む map を返します。[`Map(Any, Any)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT map('key1', number, 'key2', number * 2) FROM numbers(3)
```

```response title=Response theme={null}
{'key1':0,'key2':0}
{'key1':1,'key2':2}
{'key1':2,'key2':4}
```

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

導入バージョン: v20.7.0

すべてのキーを集め、対応する値を合計します。

**構文**

```sql theme={null}
mapAdd(arg1[, arg2, ...])
```

**引数**

* `arg1[, arg2, ...]` — 最初の配列の要素がキーを表し、2 番目の配列に各キーの値が含まれる Map または 2 つの配列からなる Tuple。[`Map(K, V)`](/ja/reference/data-types/map) または [`Tuple(Array(T), Array(T))`](/ja/reference/data-types/tuple)

**戻り値**

Map、または Tuple を返します。最初の配列にはソートされたキーが、2 番目の配列には値が含まれます。[`Map(K, V)`](/ja/reference/data-types/map) または [`Tuple(Array(T), Array(T))`](/ja/reference/data-types/tuple)

**例**

**Map 型の場合**

```sql title=Query theme={null}
SELECT mapAdd(map(1, 1), map(1, 1))
```

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

**tuple を使う場合**

```sql title=Query theme={null}
SELECT mapAdd(([toUInt8(1), 2], [1, 1]), ([toUInt8(1), 2], [1, 1]))
```

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

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

導入バージョン: v23.4.0

map 内のすべてのキー・バリューの組に対して、条件が成り立つかどうかを判定します。
`mapAll` は高階関数です。
第 1 引数としてラムダ関数を渡すことができます。

**構文**

```sql theme={null}
mapAll([func,] map)
```

**引数**

* `func` — ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — 判定対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

すべてのキー・バリューのペアが条件を満たす場合は `1`、そうでない場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapAll((k, v) -> v = 1, map('k1', 1, 'k2', 2))
```

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

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

導入バージョン: v22.3.0

mapの各要素に関数を適用します。

**構文**

```sql theme={null}
mapApply(func, map)
```

**引数**

* `func` — ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — 関数の適用対象となる Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

元の Map の各要素に `func` を適用して得られる新しい Map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapApply((k, v) -> (k, v * 2), map('k1', 1, 'k2', 2))
```

```response title=Response theme={null}
{'k1':2,'k2':4}
```

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

導入バージョン: v23.4.0

複数の `Map` 型の値を、キーの一致に基づいて連結します。
同じキーを持つ要素が複数の入力 `Map` に含まれている場合、それらの要素はすべて結果の `Map` に追加されますが、`[]` 演算子でアクセスできるのは最初の要素だけです。

**構文**

```sql theme={null}
mapConcat(maps)
```

**引数**

* `maps` — 任意個の map。[`Map`](/ja/reference/data-types/map)

**戻り値**

引数として渡された複数の map を連結した map を返します。[`Map`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapConcat(map('k1', 'v1'), map('k2', 'v2'))
```

```response title=Response theme={null}
{'k1':'v1','k2':'v2'}
```

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

導入バージョン: v21.2.0

`map` にキーが含まれているかどうかを判定します。

**構文**

```sql theme={null}
mapContainsKey(map, key)
```

**別名**: `mapContains`

**引数**

* `map` — 検索対象のマップ。[`Map(K, V)`](/ja/reference/data-types/map)
* `key` — 検索するキー。型はマップのキー型と一致している必要があります。[`Any`](/ja/reference/data-types)

**戻り値**

マップにキーが含まれている場合は 1、含まれていない場合は 0 を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapContainsKey(map('k1', 'v1', 'k2', 'v2'), 'k1')
```

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

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

導入バージョン: v23.4.0

map に、`LIKE` で指定したパターンに一致するキーが含まれているかどうかを判定します。

**構文**

```sql theme={null}
mapContainsKeyLike(map, pattern)
```

**引数**

* `map` — 検索対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)
* `pattern` — キーの照合に使用するパターン。[`const String`](/ja/reference/data-types/string)

**戻り値**

`map` に `pattern` に一致するキーが含まれている場合は `1`、それ以外の場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsKeyLike(a, 'a%') FROM tab;
```

```response title=Response theme={null}
┌─mapContainsKeyLike(a, 'a%')─┐
│                           1 │
│                           0 │
└─────────────────────────────┘
```

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

導入バージョン: v25.6.0

map に値が含まれているかどうかを判定します。

**構文**

```sql theme={null}
mapContainsValue(map, value)
```

**引数**

* `map` — 検索対象の Map。 [`Map(K, V)`](/ja/reference/data-types/map)
* `value` — 検索する値。型は map の値型と一致している必要があります。 [`Any`](/ja/reference/data-types)

**戻り値**

map にその値が含まれていれば `1`、含まれていなければ `0` を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapContainsValue(map('k1', 'v1', 'k2', 'v2'), 'v1')
```

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

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

導入バージョン: v25.5.0

map に、指定したパターンに `LIKE` で一致する値が含まれているかどうかを確認します。

**構文**

```sql theme={null}
mapContainsValueLike(map, pattern)
```

**引数**

* `map` — 検索対象の Map。 [`Map(K, V)`](/ja/reference/data-types/map)
* `pattern` — 値を照合するためのパターン。 [`const String`](/ja/reference/data-types/string)

**戻り値**

`map` に `pattern` に一致する値が含まれている場合は `1` を返し、そうでない場合は `0` を返します。 [`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapContainsValueLike(a, 'a%') FROM tab;
```

```response title=Response theme={null}
┌─mapContainsV⋯ke(a, 'a%')─┐
│                        1 │
│                        0 │
└──────────────────────────┘
```

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

導入バージョン: v23.4.0

map 内の少なくとも 1 つのキー・バリューの組について、条件が成り立つかどうかを判定します。
`mapExists` は高階関数です。
第 1 引数としてラムダ関数を渡せます。

**構文**

```sql theme={null}
mapExists([func,] map)
```

**引数**

* `func` — 任意。ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — チェック対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

少なくとも 1 つのキー・バリューのペアが条件を満たす場合は `1` を返し、それ以外の場合は `0` を返します。[`UInt8`](/ja/reference/data-types/int-uint)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapExists((k, v) -> v = 1, map('k1', 1, 'k2', 2))
```

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

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

導入バージョン: v23.4.0

文字列キーを持つ map と `LIKE` パターンを指定すると、この関数はキーがそのパターンに一致する要素を含む map を返します。

**構文**

```sql theme={null}
mapExtractKeyLike(map, pattern)
```

**引数**

* `map` — 抽出元の Map。[`Map(K, V)`](/ja/reference/data-types/map)
* `pattern` — キーとの照合に使用するパターン。[`const String`](/ja/reference/data-types/string)

**戻り値**

キーが指定したパターンに一致する要素を含む map を返します。パターンに一致する要素がない場合は、空の map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractKeyLike(a, 'a%') FROM tab;
```

```response title=Response theme={null}
┌─mapExtractKeyLike(a, 'a%')─┐
│ {'abc':'abc'}              │
│ {}                         │
└────────────────────────────┘
```

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

導入バージョン: v25.5.0

文字列の値を持つ map と `LIKE` pattern が与えられると、この関数は、値が pattern に一致する要素を含む map を返します。

**構文**

```sql theme={null}
mapExtractValueLike(map, pattern)
```

**引数**

* `map` — 抽出元の Map。[`Map(K, V)`](/ja/reference/data-types/map)
* `pattern` — 値の照合に使用するパターン。[`const String`](/ja/reference/data-types/string)

**戻り値**

値が指定したパターンに一致する要素を含む map を返します。一致する要素がない場合は、空の map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
CREATE TABLE tab (a Map(String, String))
ENGINE = MergeTree
ORDER BY tuple();

INSERT INTO tab VALUES ({'abc':'abc','def':'def'}), ({'hij':'hij','klm':'klm'});

SELECT mapExtractValueLike(a, 'a%') FROM tab;
```

```response title=Response theme={null}
┌─mapExtractValueLike(a, 'a%')─┐
│ {'abc':'abc'}                │
│ {}                           │
└──────────────────────────────┘
```

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

導入バージョン: v22.3.0

マップの各要素に関数を適用して、マップをフィルタリングします。

**構文**

```sql theme={null}
mapFilter(func, map)
```

**引数**

* `func` — ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — フィルタリング対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

`func` が `0` 以外の値を返す要素のみを含む Map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapFilter((k, v) -> v > 1, map('k1', 1, 'k2', 2))
```

```response title=Response theme={null}
{'k2':2}
```

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

導入バージョン: v23.3.0

キーの配列またはマップと、値の配列またはマップからマップを生成します。
この関数は、`CAST([...], 'Map(key_type, value_type)')` 構文の便利な代替手段です。

**構文**

```sql theme={null}
mapFromArrays(keys, values)
```

**別名**: `MAP_FROM_ARRAYS`

**引数**

* `keys` — マップの作成元となるキーの Array または Map。[`Array`](/ja/reference/data-types/array) または [`Map`](/ja/reference/data-types/map)
* `values` — マップの作成元となる値の Array または Map。[`Array`](/ja/reference/data-types/array) または [`Map`](/ja/reference/data-types/map)

**戻り値**

キーの Array と値の Array/Map から構成されるキーと値を持つマップを返します。[`Map`](/ja/reference/data-types/map)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT mapFromArrays(['a', 'b', 'c'], [1, 2, 3])
```

```response title=Response theme={null}
{'a':1,'b':2,'c':3}
```

**Map型の入力の場合**

```sql title=Query theme={null}
SELECT mapFromArrays([1, 2, 3], map('a', 1, 'b', 2, 'c', 3))
```

```response title=Response theme={null}
{1:('a', 1), 2:('b', 2), 3:('c', 3)}
```

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

導入バージョン: v21.2.0

指定された map のキーを返します。
この関数は、設定 [`optimize_functions_to_subcolumns`](/ja/reference/settings/session-settings#optimize_functions_to_subcolumns) を有効にすることで最適化できます。
この設定を有効にすると、関数は map 全体ではなく `keys` サブカラムのみを読み取ります。
クエリ `SELECT mapKeys(m) FROM table` は `SELECT m.keys FROM table` に変換されます。

**構文**

```sql theme={null}
mapKeys(map)
```

**引数**

* `map` — キーを抽出する対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

Map に含まれるすべてのキーを格納した配列を返します。[`Array(T)`](/ja/reference/data-types/array)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapKeys(map('k1', 'v1', 'k2', 'v2'))
```

```response title=Response theme={null}
['k1','k2']
```

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

導入バージョン: v23.4.0

mapの要素を降順にソートし、追加の limit 引数により部分ソートを可能にします。
func 関数が指定されている場合、ソート順は mapのキーと値に func 関数を適用した結果によって決まります。

**構文**

```sql theme={null}
mapPartialReverseSort([func,] limit, map)
```

**引数**

* `func` — 省略可能。ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `limit` — 範囲 `[1..limit]` の要素がソートされます。[`(U)Int*`](/ja/reference/data-types/int-uint)
* `map` — ソート対象のマップ。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

降順で部分的にソートされたマップを返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapPartialReverseSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
```

```response title=Response theme={null}
{'k1':3,'k3':2,'k2':1}
```

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

導入バージョン: v23.4.0

追加の limit 引数により部分ソートを可能にしつつ、map の要素を昇順にソートします。
func 関数が指定されている場合、ソート順は map のキーと値に func 関数を適用した結果によって決まります。

**構文**

```sql theme={null}
mapPartialSort([func,] limit, map)
```

**引数**

* `func` — 任意。ラムダ関数。[`Lambda function`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `limit` — 範囲 `[1..limit]` 内の要素がソートされます。[`(U)Int*`](/ja/reference/data-types/int-uint)
* `map` — ソート対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

部分的にソートされた Map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapPartialSort((k, v) -> v, 2, map('k1', 3, 'k2', 1, 'k3', 2))
```

```response title=Response theme={null}
{'k2':1,'k3':2,'k1':3}
```

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

導入バージョン: v20.10.0

整数のキーを持つマップで、欠落しているキー・バリューのペアを補完します。
最大値を超えてキーを拡張できるように、最大キーを指定できます。
具体的には、この関数は、キーが最小キーから最大キー (または指定されている場合は `max` 引数) まで 1 刻みで連続する系列を成し、それに対応する値を持つマップを返します。
キーに対応する値が指定されていない場合は、デフォルト値が使用されます。
キーが重複している場合は、最初の値のみ (出現順) がそのキーに関連付けられます。

**構文**

```sql theme={null}
mapPopulateSeries(map[, max]) | mapPopulateSeries(keys, values[, max])
```

**引数**

* `map` — 整数キーを持つ Map。[`Map((U)Int*, V)`](/ja/reference/data-types/map)
* `keys` — キーの Array。[`Array(T)`](/ja/reference/data-types/array)
* `values` — 値の Array。[`Array(T)`](/ja/reference/data-types/array)
* `max` — オプション。キーの最大値。[`Int8`](/ja/reference/data-types/int-uint) または [`Int16`](/ja/reference/data-types/int-uint) または [`Int32`](/ja/reference/data-types/int-uint) または [`Int64`](/ja/reference/data-types/int-uint) または [`Int128`](/ja/reference/data-types/int-uint) または [`Int256`](/ja/reference/data-types/int-uint)

**戻り値**

キーがソート順に並んだ最初の配列と、対応するキーの値を格納した 2 番目の配列からなる Map または 2 つの配列の Tuple を返します。[`Map(K, V)`](/ja/reference/data-types/map) または [`Tuple(Array(UInt*), Array(Any))`](/ja/reference/data-types/tuple)

**例**

**Map 型の場合**

```sql title=Query theme={null}
SELECT mapPopulateSeries(map(1, 10, 5, 20), 6)
```

```response title=Response theme={null}
{1:10, 2:0, 3:0, 4:0, 5:20, 6:0}
```

**マッピングされた配列の場合**

```sql title=Query theme={null}
SELECT mapPopulateSeries([1, 2, 4], [11, 22, 44], 5)
```

```response title=Response theme={null}
([1, 2, 3, 4, 5], [11, 22, 0, 44, 0])
```

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

導入バージョン: v23.4.0

mapの要素を降順にソートします。
func 関数が指定されている場合、ソート順は map のキーと値に func 関数を適用した結果によって決まります。

**構文**

```sql theme={null}
mapReverseSort([func,] map)
```

**引数**

* `func` — 任意。ラムダ関数。[`ラムダ関数`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — ソート対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

降順でソートされた Map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapReverseSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
```

```response title=Response theme={null}
{'k1':3,'k3':2,'k2':1}
```

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

導入バージョン: v23.4.0

`map` の要素を昇順にソートします。
`func` 関数を指定した場合、ソート順は `map` のキーと値に `func` 関数を適用した結果によって決まります。

**構文**

```sql theme={null}
mapSort([func,] map)
```

**引数**

* `func` — 任意。ラムダ関数。[`ラムダ関数`](/ja/reference/functions/regular-functions/overview#arrow-operator-and-lambda)
* `map` — ソート対象の Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

昇順にソートされた Map を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapSort((k, v) -> v, map('k1', 3, 'k2', 1, 'k3', 2))
```

```response title=Response theme={null}
{'k2':1,'k3':2,'k1':3}
```

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

導入バージョン: v20.7.0

すべてのキーを収集し、対応する値同士を減算します。

**構文**

```sql theme={null}
mapSubtract(arg1[, arg2, ...])
```

**引数**

* `arg1[, arg2, ...]` — 最初の配列の要素がキーを表し、2 番目の配列に各キーの値が含まれる Map、または 2 つの配列からなる Tuple。[`Map(K, V)`](/ja/reference/data-types/map) または [`Tuple(Array(T), Array(T))`](/ja/reference/data-types/tuple)

**戻り値**

1 つの Map または Tuple を返します。最初の配列にはソート済みのキーが、2 番目の配列には値が含まれます。[`Map(K, V)`](/ja/reference/data-types/map) または [`Tuple(Array(T), Array(T))`](/ja/reference/data-types/tuple)

**例**

**Map 型の場合**

```sql title=Query theme={null}
SELECT mapSubtract(map(1, 1), map(1, 1))
```

```response title=Response theme={null}
{1:0}
```

**タプル形式の map を使用**

```sql title=Query theme={null}
SELECT mapSubtract(([toUInt8(1), 2], [toInt32(1), 1]), ([toUInt8(1), 2], [toInt32(2), 1]))
```

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

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

導入バージョン: v22.3.0

2 つの map に対して、2 番目の map の対応するキーの値で 1 番目の map の値を更新した結果を返します。

**構文**

```sql theme={null}
mapUpdate(map1, map2)
```

**引数**

* `map1` — 更新対象のマップ。[`Map(K, V)`](/ja/reference/data-types/map)
* `map2` — 更新に使用するマップ。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

`map2` 内の対応するキーの値で更新された `map1` を返します。[`Map(K, V)`](/ja/reference/data-types/map)

**例**

**基本的な使い方**

```sql title=Query theme={null}
SELECT mapUpdate(map('key1', 0, 'key3', 0), map('key1', 10, 'key2', 10))
```

```response title=Response theme={null}
{'key3':0,'key1':10,'key2':10}
```

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

導入バージョン: v21.2.0

指定したマップの値を返します。
この関数は、設定 [`optimize_functions_to_subcolumns`](/ja/reference/settings/session-settings#optimize_functions_to_subcolumns) を有効にすることで最適化できます。
この設定を有効にすると、関数はマップ全体ではなく、`values` サブカラムのみを読み取ります。
クエリ `SELECT mapValues(m) FROM table` は `SELECT m.values FROM table` に変換されます。

**Syntax**

```sql theme={null}
mapValues(map)
```

**引数**

* `map` — 値の抽出元となる Map。[`Map(K, V)`](/ja/reference/data-types/map)

**戻り値**

`map` 内のすべての値を含む配列を返します。[`Array(T)`](/ja/reference/data-types/array)

**例**

**使用例**

```sql title=Query theme={null}
SELECT mapValues(map('k1', 'v1', 'k2', 'v2'))
```

```response title=Response theme={null}
['v1','v2']
```
