Map Functions
map
キーと値のペアから Map(key, value) 型の値を作成します。
構文
引数
返される値
key:value
ペアを含むマップ。 Map(key, value)。
例
クエリ:
結果:
mapFromArrays
キーの配列またはマップと値の配列またはマップからマップを作成します。
この関数は、構文 CAST([...], 'Map(key_type, value_type)')
の便利な代替手段です。
たとえば、次のように書く代わりに
CAST((['aa', 'bb'], [4, 5]), 'Map(String, UInt32)')
またはCAST([('aa',4), ('bb',5)], 'Map(String, UInt32)')
mapFromArrays(['aa', 'bb'], [4, 5])
と書くことができます。
構文
エイリアス: MAP_FROM_ARRAYS(keys, values)
引数
keys
— マップを作成するためのキーの配列またはマップ Array または Map。keys
が配列の場合、NULL 値を含まない限り、Array(Nullable(T))
またはArray(LowCardinality(Nullable(T)))
を型として受け入れます。values
- マップを作成するための値の配列またはマップ Array または Map。
返される値
- キー配列および値配列/マップから構成されたマップ。
例
クエリ:
結果:
mapFromArrays
は Map 型の引数も受け入れます。これらは実行時にタプルの配列にキャストされます。
結果:
結果:
extractKeyValuePairs
キーと値のペアの文字列を Map(String, String) に変換します。 解析はノイズに対して耐性があります(例:ログファイル)。 入力文字列のキーと値のペアは、キーに続いてキー-値の区切り文字、そして値があります。 キー-値ペアはペアの区切り文字で区切られています。 キーと値は引用されることがあります。
構文
エイリアス:
str_to_map
mapFromString
引数
data
- キーと値のペアを抽出するための文字列。String または FixedString。key_value_delimiter
- キーと値を区切る単一文字。デフォルトは:
。String または FixedString。pair_delimiters
- ペアを区切る文字のセット。デフォルトは,
および;
。String または FixedString。quoting_character
- 引用文字として使用される単一文字。デフォルトは"
。String または FixedString。
返される値
- キー-値ペアの Map(String, String) タイプ。
例
クエリ
結果:
引用文字 '
を引用文字として使用する場合:
結果:
エスケープシーケンスをサポートしないエスケープシーケンス:
結果:
toString
でシリアライズされたマップ文字列のキー-値ペアを復元するために:
結果:
extractKeyValuePairsWithEscaping
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\
を返し、ポストエスケープはそのまま保持されます。
キーに対する先頭のエスケープシーケンスはスキップされ、値に対して無効と見なされます。
例
エスケープシーケンスのサポートが有効になっている場合のエスケープシーケンス:
結果:
mapAdd
すべてのキーを集約し、対応する値を合計します。
構文
引数
引数は maps または 2 つの arrays の tuples であり、最初の配列のアイテムはキーを表し、2 番目の配列には各キーへの値が含まれます。すべてのキー配列は同じ型でなければならず、すべての値配列は一つの型に昇格されるアイテムを含む必要があります (Int64, UInt64 または Float64)。共通の昇格された型が結果配列の型として使用されます。
返される値
例
Map
タイプのクエリ:
結果:
タプルによるクエリ:
結果:
mapSubtract
すべてのキーを集約し、対応する値を引き算します。
構文
引数
引数は maps または 2 つの arrays の tuples であり、最初の配列のアイテムはキーを表し、2 番目の配列には各キーへの値が含まれます。すべてのキー配列は同じ型でなければならず、すべての値配列は一つの型に昇格されるアイテムを含む必要があります (Int64, UInt64 または Float64)。共通の昇格された型が結果配列の型として使用されます。
返される値
例
Map
タイプのクエリ:
結果:
タプルマップによるクエリ:
結果:
mapPopulateSeries
整数キーを持つマップの欠損キー-値ペアを填補します。
最大キーを指定することで、最大値を越えてキーを拡張することをサポートします。
具体的には、この関数は、最小キーから最大キー(または指定されている max
引数)までのキーが形成され、ステップサイズが 1 で対応する値を持つマップを返します。
特定のキーに対して値が指定されていない場合は、デフォルト値が値として使用されます。
キーが繰り返される場合、最初の値(出現順)だけがキーに関連付けられます。
構文
配列の引数については、各行に対して keys
と values
の要素数は同じでなければなりません。
引数
引数は Maps または 2 つの Arrays であり、最初の配列と 2 番目の配列は各キーに対するキーと値を含みます。
マップ配列:
map
— 整数キーを持つマップ。Map。
または
keys
— キーの配列。Array(Int)。values
— 値の配列。Array(Int)。max
— 最大キー値。オプション。Int8, Int16, Int32, Int64, Int128, Int256。
返される値
例
Map
タイプのクエリ:
結果:
マップ配列によるクエリ:
結果:
mapKeys
指定されたマップのキーを返します。
この関数は、設定 optimize_functions_to_subcolumns を有効にすることで最適化できます。
設定が有効な場合、この関数はマップ全体ではなく、keys サブカラムのみを読み取ります。
クエリ SELECT mapKeys(m) FROM table
は SELECT m.keys FROM table
に変換されます。
構文
引数
map
— マップ。Map。
返される値
map
からのすべてのキーを含む配列。Array。
例
クエリ:
結果:
mapContains
指定されたキーが指定されたマップに含まれているかどうかを返します。
構文
エイリアス: mapContainsKey(map, key)
引数
map
— マップ。Map。key
— キー。タイプはmap
のキーの型と一致しなければなりません。
返される値
map
がkey
を含む場合は1
、含まない場合は0
。UInt8。
例
クエリ:
結果:
mapContainsKeyLike
構文
引数
map
— マップ。Map。pattern
- 一致させる文字列パターン。
返される値
map
が指定されたパターンのようなキーを含む場合は1
、含まない場合は0
。
例
クエリ:
結果:
mapExtractKeyLike
文字列キーを持つマップと LIKE パターンを引数に与えると、この関数はパターンに一致するキーを持つ要素を含むマップを返します。
構文
引数
map
— マップ。Map。pattern
- 一致させる文字列パターン。
返される値
- 指定されたパターンに一致する要素を含むマップ。要素がパターンに一致しない場合は、空のマップが返されます。
例
クエリ:
結果:
mapValues
指定されたマップの値を返します。
この関数は、設定 optimize_functions_to_subcolumns を有効にすることで最適化できます。
設定が有効な場合、この関数はマップ全体ではなく、values サブカラムのみを読み取ります。
クエリ SELECT mapValues(m) FROM table
は SELECT m.values FROM table
に変換されます。
構文
引数
map
— マップ。Map。
返される値
map
からのすべての値を含む配列。Array。
例
クエリ:
結果:
mapContainsValue
指定された値が指定されたマップに含まれているかどうかを返します。
構文
エイリアス: mapContainsValue(map, value)
引数
map
— マップ。Map。value
— 値。タイプはmap
の値の型と一致しなければなりません。
返される値
map
がvalue
を含む場合は1
、含まない場合は0
。UInt8。
例
クエリ:
結果:
mapContainsValueLike
構文
引数
map
— マップ。Map。pattern
- 一致させる文字列パターン。
返される値
map
が指定されたパターンのような値を含む場合は1
、含まない場合は0
。
例
クエリ:
結果:
mapExtractValueLike
文字列値を持つマップと LIKE パターンを引数に与えると、この関数は指定されたパターンに一致する値を持つ要素を含むマップを返します。
構文
引数
map
— マップ。Map。pattern
- 一致させる文字列パターン。
返される値
- 指定されたパターンに一致する値を持つ要素を含むマップ。要素がパターンに一致しない場合は、空のマップが返されます。
例
クエリ:
結果:
mapApply
マップの各要素に関数を適用します。
構文
引数
返される値
- 元のマップから生成されたマップを返し、各要素に対して
func(map1[i], ..., mapN[i])
を適用します。
例
クエリ:
結果:
mapFilter
マップ要素に関数を適用してフィルタします。
構文
引数
返される値
func(map1[i], ..., mapN[i])
が 0 以外の何かを返すマップの要素のみを含むマップを返します。
例
クエリ:
結果:
mapUpdate
構文
引数
返される値
- map2の対応するキーに対する値が更新された map1 を返します。
例
クエリ:
結果:
mapConcat
キーの等価性に基づいて複数のマップを連結します。
同じキーを持つ要素が複数の入力マップに存在する場合、すべての要素が結果マップに追加されますが、[]
演算子を介してアクセス可能なのは最初の要素だけです。
構文
引数
maps
– 任意の数の Maps。
返される値
- 引数として渡された連結されたマップを持つマップを返します。
例
クエリ:
結果:
クエリ:
結果:
mapExists([func,], map)
map
内に少なくとも 1 つのキー-値ペアが存在し、func(key, value)
が 0 以外の値を返す場合は 1 を返します。そうでない場合は 0 を返します。
mapExists
は 高階関数です。
最初の引数としてラムダ関数を渡すことができます。
例
クエリ:
結果:
mapAll([func,] map)
func(key, value)
が map
内のすべてのキー-値ペアに対して 0 以外の何かを返す場合は 1 を返します。そうでない場合は 0 を返します。
mapAll
は 高階関数です。
最初の引数としてラムダ関数を渡すことができます。
例
クエリ:
結果:
mapSort([func,], map)
マップの要素を昇順にソートします。
func
関数が指定されている場合、ソート順序はマップのキーと値に対する func
関数の結果によって決まります。
例
より詳しい情報については、 arraySort
関数の リファレンス を参照してください。
mapPartialSort
マップの要素を昇順にソートし、追加の limit
引数によって部分的なソートを可能にします。
func
関数が指定されている場合、ソート順序はマップのキーと値に対する func
関数の結果によって決まります。
構文
引数
返される値
- 部分的にソートされたマップ。Map。
例
mapReverseSort([func,], map)
マップの要素を降順にソートします。
func
関数が指定されている場合、ソート順序はマップのキーと値に対する func
関数の結果によって決まります。
例
より詳しい情報については、 arrayReverseSort 関数を参照してください。
mapPartialReverseSort
マップの要素を降順にソートし、追加の limit
引数によって部分的なソートを可能にします。
func
関数が指定されている場合、ソート順序はマップのキーと値に対する func
関数の結果によって決まります。
構文
引数
返される値
- 部分的にソートされたマップ。Map。
例