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
列表示实际的技能。