![](https://i-blog.csdnimg.cn/blog_migrate/23e934f4f6f043e41fe34cee87ceb4b8.png)
在 Hive 中,explode 函数用于将数组(Array)
或者Map
类型的列拆分成多行
,
每个元素或键值对为一行。这允许我们在查询中对数组或 Map 进行扁平化
操作。
下面是使用 explode 函数的示例:
假设我们有一个包含数组
字段的表 my_table,并且想要将该数组字段展开成多行。
创建并加载示例数据:
-- 创建 my_table 表并导入数据
CREATE TABLE my_table (
id INT,
values ARRAY<STRING>
);
INSERT INTO my_table VALUES (1, array('apple', 'banana', 'orange'));
INSERT INTO my_table VALUES (2, array('cat', 'dog', 'elephant'));
使用 explode 函数展开数组列:
SELECT id, exploded_value
FROM my_table
LATERAL VIEW explode(values) exploded_table AS exploded_value;
在上述查询中,我们使用了 explode 函数来展开 values 列,并将展开后的值重命名为 exploded_value。
通过 LATERAL VIEW 关键字,我们可以在查询中使用 explode
函数,并将其作为一个虚拟表(exploded_table)进行访问。
以上查询将返回以下结果:
id | exploded_value
---+----------------
1 | apple
1 | banana
1 | orange
2 | cat
2 | dog
2 | elephant
展开后的结果使得每个数组元素都成为了一个独立的行。
需要注意的是,explode 函数只能应用于数组(Array)和 Map 类型的列。
对于其他类型的列,explode 函数无法使用。