示例1
-- 创建测试数据
WITH test_data AS (SELECT array('apple', 'banana', 'cherry') as fruits
)
SELECT pos, col
FROM test_data
LATERAL VIEW posexplode(fruits) t AS pos, col;
结果
pos | col
----|-------
0 | apple
1 | banana
2 | cherry
示例2
-- 假设有一个用户表,包含用户的爱好数组
CREATE TABLE users (user_id INT,name STRING,hobbies ARRAY<STRING>
);INSERT INTO users VALUES
(1, '张三', array('读书', '游泳', '编程')),
(2, '李四', array('音乐', '绘画')),
(3, '王五', array());-- 使用 posexplode 展开爱好
SELECT user_id,name,pos as hobby_order,col as hobby
FROM users
LATERAL VIEW posexplode(hobbies) t AS pos, col;
结果
user_id | name | hobby_order | hobby
--------|------|-------------|-------
1 | 张三 | 0 | 读书
1 | 张三 | 1 | 游泳
1 | 张三 | 2 | 编程
2 | 李四 | 0 | 音乐
2 | 李四 | 1 | 绘画