示例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 | 繪畫