在Hive中,我们可以使用以下方式进行数据过滤操作:
1. WHERE:
- WHERE子句可以用于进行行过滤。
- 我们可以指定过滤条件为=, !=, >, <, BETWEEN, IN等。
例如:
SELECT * FROM employees WHERE dept_id = 10; -- 过滤部门id为10的行
SELECT * FROM employees WHERE salary BETWEEN 5000 AND 10000; -- 过滤工资在5000到10000之间的行
SELECT * FROM employees WHERE name IN ('John', 'Amy'); -- 过滤name为John或Amy的行
2. HAVING:
- HAVING子句可以用于GROUP BY聚合后进行过滤。
- WHERE过滤的是行,HAVING过滤的是组。
例如:
SELECT dept_id, AVG(salary)
FROM employees
GROUP BY dept_id
HAVING AVG(salary) > 8000; -- 过滤平均工资超过8000的组
3. DROP TABLE … PURGE:
- DROP TABLE … PURGE可以在删除表时进行过滤。
- 这会彻底删除表的数据和元数据,无论表中的数据是否被其他表引用。
例如:
DROP TABLE departments PURGE; -- 彻底删除departments表
4. CASE expression
- CASE expression可以用于进行条件过滤。
- 这可以基于条件过滤或替换值,实现过滤的目的。
例如:
SELECT
CASE WHEN dept_id = 10 THEN salary*1.1 -- 如果部门id为10,工资增加10%
WHEN dept_id = 20 THEN salary*1.2 -- 如果部门id为20,工资增加20%
ELSE salary END AS new_salary
FROM employees;
这会根据部门id条件,过滤并更新员工工资。