在Hive中,我们可以使用以下方式进行数据聚合操作:
1. GROUP BY:
- GROUP BY子句可以对数据进行分组,然后使用聚合函数计算每个组的聚合结果。
- 这是进行数据聚合的最基本方式。
例如:
SELECT dept_id, AVG(salary)
FROM employees
GROUP BY dept_id; -- 按部门分组,计算每个部门的平均工资
2. CUBE:
- CUBE可以对多个维度进行聚合,会生成所有维度组合的聚合结果。
- 这实现了完全的聚合。
例如:
SELECT dept_id, job_id, AVG(salary)
FROM employees
GROUP BY CUBE(dept_id, job_id);
这会先按部门和职位分组,然后对部门.职位和部门+职位这三个维度进行聚合,获得完全聚合的结果。
3. ROLLUP:
- ROLLUP可以对多个维度实现级联聚合。
- 这会从最低维度开始逐级聚合到最高维度。
例如:
SELECT dept_id, job_id, AVG(salary)
FROM employees
GROUP BY ROLLUP(dept_id, job_id);
这会先按部门和职位分组,然后对部门.部门+职位这两个维度进行聚合,实现从职位级到部门级的聚合。
4. Window Functions:
- Window Functions可以对指定的行窗进行聚合。
- 这需要使用OVER()子句进行窗口定义,然后调用聚合函数。
例如:
SELECT dept_id, salary,
AVG(salary) OVER(PARTITION BY dept_id) AS dept_avg_salary
FROM employees;
这会对每个部门的行窗进行聚合,计算每个部门的平均工资。
数据聚合是BI和数据分析的基石,熟练掌握Hive聚合工具可以让我们轻松实现OLAP分析,产出重要的BI指标,为数据驱动的商业决策提供支持。