У меня есть такая таблица
+-----+------------------------------+
| id | mapCol |
+-----+------------------------------+
| id1 | {key1:val1, key2:val2} |
| id2 | {key1:val3, key2:val4} |
+-----+------------------------------+
, поэтому я могу легко выполнить запрос вроде
select explode(mapCol) as (key, val) from myTab where id='id1'
, и я получу
+--------+-----+
| key | val |
+--------+-----+
| key1 | val1|
| key2 | val2|
+--------+-----+
Я хочу создать таблицу, подобную этой
+-----+------+-----+
|id | key | val |
+-----+------+-----+
| id1 | key1 | val1|
| id1 | key2 | val2|
| id2 | key1 | val3|
| id2 | key2 | val4|
+-----+------------+
, отметьте, что я хочу отобразить id
вместе с разнесенными строками.Кроме того, для нескольких идентификаторов key
может повторяться, поэтому я хочу, чтобы строки отражали это.По сути, id
+ key
должен быть уникальным.
Как мне написать запрос для этого?Я пытался
select explode(mapCol) as (key, val), id from myTab
, но я получил
FAILED: SemanticException 1:66 Only a single expression in the SELECT clause is supported with UDTF's