メインコンテンツまでスキップ

map_values

map_values

説明

指定されたマップ内のすべての値の配列を返します。

この関数は、v2.5からサポートされています。

構文

map_values(any_map)

パラメータ

any_map: 値を取得するためのMAPの値です。

戻り値

戻り値はarray<valueType>の形式です。配列内の要素の型は、マップ内の値の型に一致します。

入力がNULLの場合、NULLが返されます。MAPの値のキーまたは値がNULLの場合、NULLは通常の値として処理され、結果に含まれます。

StarRocksネイティブテーブルからMAPデータをクエリする

StarRocksは、v3.1以降、テーブルを作成する際にMAP列を定義することをサポートしています。この例では、次のデータを含むtest_mapというテーブルを使用します。

CREATE TABLE test_map(
col_int INT,
col_map MAP<VARCHAR(50),INT>
)
DUPLICATE KEY(col_int);

INSERT INTO test_map VALUES
(1,map{"a":1,"b":2}),
(2,map{"c":3}),
(3,map{"d":4,"e":5});

SELECT * FROM test_map ORDER BY col_int;
+---------+---------------+
| col_int | col_map |
+---------+---------------+
| 1 | {"a":1,"b":2} |
| 2 | {"c":3} |
| 3 | {"d":4,"e":5} |
+---------+---------------+
3 rows in set (0.05 sec)

col_map列の各行からすべての値を取得します。

select map_values(col_map) from test_map order by col_int;
+---------------------+
| map_values(col_map) |
+---------------------+
| [1,2] |
| [3] |
| [4,5] |
+---------------------+
3 rows in set (0.04 sec)

データレイクからMAPデータをクエリする

この例では、次のデータを含むHiveテーブルhive_mapを使用します。

SELECT * FROM hive_map ORDER BY col_int;
+---------+---------------+
| col_int | col_map |
+---------+---------------+
| 1 | {"a":1,"b":2} |
| 2 | {"c":3} |
| 3 | {"d":4,"e":5} |
+---------+---------------+

Hiveカタログをクラスタに作成した後、このカタログとmap_values()関数を使用して、col_map列の各行からすべての値を取得できます。

select map_values(col_map) from hive_map order by col_int;
+---------------------+
| map_values(col_map) |
+---------------------+
| [1,2] |
| [3] |
| [4,5] |
+---------------------+
3 rows in set (0.04 sec)