'having' 절의 목적 이해
이 단계에서는 Hive 에서 "having" 절의 기본적인 목적과 데이터 필터링 및 집계와 어떻게 관련되는지 살펴보겠습니다.
Hive 의 "having" 절은 지정된 조건을 기반으로 데이터 그룹을 필터링하기 위해 "group by" 절과 함께 사용됩니다. 데이터를 그룹화하고 집계한 후 필터를 적용하여 지정된 기준을 충족하지 않는 전체 그룹을 필터링할 수 있습니다.
다음은 "having" 절의 사용법을 보여주는 예시입니다.
먼저, 터미널에서 다음 명령을 실행하여 hadoop 사용자로 로그인했는지 확인합니다.
su - hadoop
그런 다음, 다음 명령을 실행하여 Hive 셸을 시작합니다.
hive
이제 샘플 테이블을 생성합니다.
CREATE TABLE sales (
product STRING,
category STRING,
sales_amount FLOAT
);
샘플 데이터를 삽입합니다.
INSERT INTO sales VALUES
('Product A', 'Electronics', 1000.0),
('Product B', 'Electronics', 2000.0),
('Product C', 'Clothing', 500.0),
('Product D', 'Clothing', 1500.0),
('Product E', 'Electronics', 3000.0);
마지막으로, 카테고리별 총 판매액을 계산하고 총 판매액이 3000 보다 큰 카테고리를 필터링합니다.
CREATE TABLE result_1
AS
SELECT category, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY category
HAVING SUM(sales_amount) > 3000;
SELECT * FROM result_1;
이 예제에서는 먼저 product, category, sales_amount 열이 있는 sales라는 테이블을 생성합니다. 그런 다음 테이블에 샘플 데이터를 삽입합니다.
다음으로, "group by" 절을 사용하여 데이터를 category별로 그룹화하고, SUM 함수를 사용하여 각 카테고리의 총 판매액을 계산합니다. 그런 다음 "having" 절을 사용하여 total_sales가 3000 이하인 카테고리를 필터링합니다.
이 쿼리의 출력은 총 판매액 (2000.0 + 1000.0 + 3000.0 = 6000.0) 이 3000 을 초과하므로 "Electronics" 카테고리만 포함하고, "Clothing" 카테고리는 총 판매액 (500.0 + 1500.0 = 2000.0) 이 "having" 절에 지정된 조건을 충족하지 않으므로 제외됩니다.