Hive中如何进行数据过滤操作?代码举例讲解

在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条件,过滤并更新员工工资。