Hive中的posexplode
函數用于處理數組或結構體類型的列,將其拆分為多行
假設我們有一個名為employee
的表,其中包含一個名為skills
的數組類型列,表示員工的技能。我們希望將每個技能拆分為單獨的行。
表結構如下:
CREATE TABLE employee (
id INT,
name STRING,
skills ARRAY<STRING>
);
插入一些示例數據:
INSERT INTO employee (id, name, skills)
VALUES (1, 'Alice', ARRAY('Java', 'Python', 'Hive'));
現在,我們可以使用posexplode
函數將skills
列拆分為多行:
SELECT id, name, pos, skill
FROM employee
LATERAL VIEW INLINE(skills) inline_table AS pos, skill;
這將返回以下結果:
id | name | pos | skill
-----------------------------
1 | Alice | 1 | Java
1 | Alice | 2 | Python
1 | Alice | 3 | Hive
在這個例子中,我們使用了LATERAL VIEW INLINE
來將skills
數組拆分為多行。pos
列表示技能在數組中的位置,skill
列表示實際的技能。