Я знаю, что нет прямого способа переноса данных в улье. Я последовал этому вопросу: Есть ли способ транспонировать данные в Hive?, но поскольку окончательного ответа там нет, он не может полностью пройти.
Это та таблица, которая у меня есть:
| ID | Code | Proc1 | Proc2 |
| 1 | A | p | e |
| 2 | B | q | f |
| 3 | B | p | f |
| 3 | B | q | h |
| 3 | B | r | j |
| 3 | C | t | k |
Здесь Proc1 может иметь любое количество значений. ID, Code и Proc1 вместе образуют уникальный ключ для этой таблицы. Я хочу, чтобы Pivot/transpose эта таблица, чтобы каждое уникальное значение в Proc1 стало новым столбцом, а соответствующее значение из Proc2 - значением в этом столбце для соответствующей строки. В сущности, я пытаюсь получить что-то вроде:
| ID | Code | p | q | r | t |
| 1 | A | e | | | |
| 2 | B | | f | | |
| 3 | B | f | h | j | |
| 3 | C | | | | k |
В новой преобразованной таблице идентификатор и код являются единственным первичным ключом. Из упомянутого выше билета, я мог бы получить это далеко, используя UDAF to_map. (Отказ от ответственности - это может быть не шаг в правильном направлении, а просто упоминание здесь, если оно есть)
| ID | Code | Map_Aggregation |
| 1 | A | {p:e} |
| 2 | B | {q:f} |
| 3 | B | {p:f, q:h, r:j } |
| 3 | C | {t:k} |
Но не знаю, как перейти от этого шага к сводной/транспонированной таблице, которую я хочу. Любая помощь в том, как продолжить, будет замечательной! Спасибо.