関数名 | ステートメント | 意味 |
map[key] | map から指定されたキーに対応する値を取得します。 | |
cardinality(x) | map の基数(サイズ)を返します。 | |
element_at(map(k, v), key) | 指定されたキーに対応する値を返します。キーが存在しない場合は NULL を返します。 | |
map() / map(array(k), array(v)) | 空のマップを返すか、指定されたキー/値の配列を使用してマップを作成します。 | |
map_from_entries(array(row(k, v))) | 指定されたエントリの配列からマップを作成します。 | |
multimap_from_entries(array(row(k, v))) | 指定されたエントリの配列から multimap を作成します。各キーには複数の値を関連付けることができます。 | |
map_concat(map1, map2, ..., mapN) | 指定されたすべての map の和集合を返します。 | |
map_filter(map(k, v), function(k, v, boolean)) | map から関数が true を返すエントリを抽出して新しい map を構築します。 | |
map_keys(x) | map 内のすべてのキーを返します。 | |
map_values(x) | map 内のすべての値を返します。 | |
map_zip_with(map(k, v1), map(k, v2), function) | 2 つの map を 1 つに結合し、同じキーに対応する値のペアに関数を適用します。 | |
transform_keys(map(k1, v), function(k1, v, k2)) | map の各エントリに関数を適用し、キーを変換します。 | |
transform_values(map(k, v1), function(k, v1, v2)) | map の各エントリに関数を適用し、値を変換します。 |
map[key]
パラメータ | 説明 |
map | パラメータ値は MAP 型です。 |
key | 取得するキー名です。 |
* | SELECT name_to_age_map['Bob'] AS bob_age
22
* | SELECT MAP(ARRAY['key1', 'key2', 'key3'], ARRAY['v1', 'v2', 'v3'])['key2']
v2
cardinality(x)
パラメータ | 説明 |
x | パラメータ値は MAP 型です。 |
* | SELECT cardinality(MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 2, 3]))
3
element_at(map(k, v), key)
パラメータ | 説明 |
map(k, v) | パラメータ値は MAP 型であり、k はキー型、v は値型です。 |
key | 取得するキー名です。 |
* | SELECT element_at(MAP(ARRAY['a', 'b'], ARRAY['test1', 'test2']), 'c')
NULL
map()map(array(k), array(v))
パラメータ | 説明 |
array(k) | キー配列。 |
array(v) | 値の配列。キー配列と同じ長さである必要があります。 |
* | SELECT map()
{}
* | SELECT MAP(ARRAY['key1', 'key2', 'key3'], ARRAY[2373, 3463, 45837])
{"key1":2373,"key2":3463,"key3":45837}
* | SELECT MAP(ARRAY['key1', 'key2', 'key3'], ARRAY['v1', 'v2', 'v3'])
{"key1":"v1","key2":"v2","key3":"v3"}
* | SELECT MAP(ARRAY['key1', 'key2', 'key3'], ARRAY[23, 34.63, 45.837])
{"key1":23,"key2":34.63,"key3":45.837}
* | SELECT MAP(ARRAY['key1', 'key2', 'key3'], ARRAY['v1', NULL, 'v3'])
{"key1":"v1","key2":null,"key3":"v3"}
map_from_entries(array(row(k, v)))
パラメータ | 説明 |
array(row(k, v)) | キーと値のペアを含む行配列で、各要素は (k, v) 形式のタプルです。 |
* | SELECT map_from_entries(ARRAY[(1, 'x'), (2, 'y')])
{"1":"x","2":"y"}
multimap_from_entries(array(row(k, v)))
パラメータ | 説明 |
array(row(k, v)) | キーと値のペアを含む行配列で、重複キーが許可されます。 |
* | SELECT multimap_from_entries(ARRAY[(1, 'x'), (2, 'y'), (1, 'z')])
{"1":["x","z"],"2":["y"]}
map_concat(map1(k, v), map2(k, v), ..., mapN(k, v))
パラメータ | 説明 |
map1, map2, ..., mapN | マージする複数の MAP 型パラメータは、キーと値の型が一致している必要があります。 |
* | SELECT map_concat(MAP(ARRAY['a'], ARRAY[1]), MAP(ARRAY['a', 'b'], ARRAY[2, 3]))
{"a":2,"b":3}
map_filter(map(k, v), function(k, v, boolean))
パラメータ | 説明 |
map(k, v) | パラメータ値は MAP 型です。 |
function(k, v, boolean) | Lambda 関数は、キー k と値 v をパラメータとして受け取り、ブール値を返します。構文:(k, v) -> ブール式。 |
* | SELECT map_filter(MAP(ARRAY[10, 20, 30], ARRAY['a', NULL, 'c']), (k, v) -> v IS NOT NULL)
{"10":"a","30":"c"}
* | SELECT map_filter(MAP(ARRAY['k1', 'k2', 'k3'], ARRAY[20, 3, 15]), (k, v) -> v > 10)
{"k1":20,"k3":15}
map_keys(x)
パラメータ | 説明 |
x | パラメータ値は MAP(k, v) 型です。 |
* | SELECT map_keys(MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 2, 3]))
["a","b","c"]
map_values(x)
パラメータ | 説明 |
x | パラメータ値は MAP(k, v) 型です。 |
* | SELECT map_values(MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 2, 3]))
[1, 2, 3]
map_zip_with(map(k, v1), map(k, v2), function(k, v1, v2, v3))
パラメータ | 説明 |
map(k, v1) | 最初の MAP 型パラメータです。 |
map(k, v2) | 2番目の MAP 型パラメータです。キーの型は最初の map と同じである必要があります。 |
function(k, v1, v2, v3) | Lambda 関数は、キー k、最初の map の値 v1、2番目の map の値 v2 を受け取り、新しい値 v3 を返します。構文:(k, v1, v2) -> 式。 |
* | SELECT map_zip_with(MAP(ARRAY[1, 2, 3], ARRAY['a', 'b', 'c']),MAP(ARRAY[1, 2, 3], ARRAY['d', 'e', 'f']),(k, v1, v2) -> concat(v1, v2))
{"1":"ad","2":"be","3":"cf"}
* | SELECT map_zip_with(MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 8, 27]),MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 2, 3]),(k, v1, v2) -> k || CAST(v1 / v2 AS VARCHAR))
{"a":"a1","b":"b4","c":"c9"}
transform_keys(map(k1, v), function(k1, v, k2))
パラメータ | 説明 |
map(k1, v) | パラメータ値は MAP 型であり、k1 は元のキー型です。 |
function(k1, v, k2) | Lambda 関数は、元のキー k1 と値 v を受け取り、新しいキー k2 を返します。構文:(k, v) -> 新しいキーの式。 |
* | SELECT transform_keys(MAP(ARRAY[1, 2, 3], ARRAY['a', 'b', 'c']), (k, v) -> k + 1)
{"2":"a","3":"b","4":"c"}
* | SELECT transform_keys(MAP(ARRAY['a', 'b', 'c'], ARRAY[1, 2, 3]), (k, v) -> v * v)
{"1":1,"4":2,"9":3}
* | SELECT transform_keys(MAP(ARRAY['a', 'b'], ARRAY[1, 2]), (k, v) -> k || CAST(v AS VARCHAR))
{"a1":1,"b2":2}
* | SELECT transform_keys(MAP(ARRAY[1, 2], ARRAY[1.0, 1.4]),(k, v) -> MAP(ARRAY[1, 2], ARRAY['one', 'two'])[k])
{"one":1,"two":1.4}
transform_values(map(k, v1), function(k, v1, v2))
パラメータ | 説明 |
map(k, v1) | パラメータ値は MAP 型で、v1 は元の値の型です。 |
function(k, v1, v2) | Lambda 関数は、キー k と元の値 v1 を受け取り、新しい値 v2 を返します。構文:(k, v) -> 新しい値の式。 |
* | SELECT transform_values(MAP(ARRAY[1, 2, 3], ARRAY[10, 20, 30]), (k, v) -> v + k)
{"1":11,"2":22,"3":33}
* | SELECT transform_values(MAP(ARRAY[1, 2, 3], ARRAY['a', 'b', 'c']), (k, v) -> k * k)
{"1":1,"2":4,"3":9}
* | SELECT transform_values(MAP(ARRAY['a', 'b'], ARRAY[1, 2]), (k, v) -> k || CAST(v AS VARCHAR))
{"a":"a1","b":"b2"}
* | SELECT transform_values(MAP(ARRAY[1, 2], ARRAY[1.0, 1.4]),(k, v) -> MAP(ARRAY[1, 2], ARRAY['one', 'two'])[k] || '_' || CAST(v AS VARCHAR))
{"1":"one_1.0","2":"two_1.4"}
フィードバック