Перейти к основному содержимому

map_values

Описание

Возвращает массив всех значений в указанной карте.

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

map_values(any_map)

Параметры

any_map: значение MAP, из которого вы хотите извлечь значения.

Возвращаемое значение

Возвращаемое значение имеет формат array<valueType>. Тип элементов в массиве соответствует типу значений в карте.

Если входное значение равно NULL, возвращается NULL. Если ключ или значение в MAP равно NULL, NULL обрабатывается как обычное значение и включается в результат.

Примеры

Запрос данных MAP из нативной таблицы Selena

Начиная с версии 1.5.0, Selena поддерживает определение 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 catalog в вашем кластере, вы можете использовать этот catalog и функцию 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)