hive的array聚合函数
时间: 2025-02-24 09:36:30 浏览: 69
### 关于 Hive Array 类型的聚合函数
#### collect_set 函数
`collect_set` 是一种去重后的 `collect_list`,能够将某一列中的不同值聚集到一个数组中。此操作对于去除重复项非常有用。
```sql
SELECT department, collect_set(position) as positions
FROM employees
GROUP BY department;
```
上述语句将会按照部门分组,并把每个部门的不同职位收集到一个数组里[^1]。
#### collect_list 函数
该函数可用来累积某一分组内特定字段的所有值至一个列表之中,不会自动删除重复条目。
```sql
SELECT department, collect_list(name) as employee_names
FROM employees
GROUP BY department;
```
这段代码会依据员工所属部门来整理成员姓名列表,允许存在同名情况。
#### explode 函数配合使用
当面对已有的数组类型数据时,explode 可以展开数组成单独行记录以便进一步分析或与其他表关联计算。
```sql
WITH exploded_data AS (
SELECT id, explode(hobbies) as hobby
FROM users
)
SELECT hobby, COUNT(*) as count
FROM exploded_data
GROUP BY hobby;
```
这里展示了如何先通过 with 子句创建一个临时视图,在其中利用 explode 将用户的兴趣爱好拆分成单行列出,再统计每种爱好数量的例子[^3]。
#### 处理复杂结构化数据
除了基本的一维数组外,Hive 还能很好地处理更复杂的嵌套结构如 map 或者 struct 类型的数据集。例如获取映射对象里的所有键可以用如下方式:
```sql
SELECT MAP_KEYS(employee_info) AS keys
FROM employees;
```
这表明即使是在较为复杂的数据模型下,也可以灵活运用各种内置函数完成所需的任务。
阅读全文
相关推荐




















