STRING_AGG
는 BigQuery에서 여러 행의 문자열을 하나의 문자열로 결합하는 데 사용되는 함수입니다. 특히, 데이터베이스에서 그룹화된 데이터를 하나의 문자열로 표현해야 할 때 유용합니다.

1. STRING_AGG 함수란?
- 여러 문자열 값을 하나로 결합하며, 구분자를 지정할 수 있습니다.
- 구문:
STRING_AGG(expression [, delimiter])
- expression: 결합할 문자열 값.
- delimiter: 문자열을 구분하는 데 사용할 구분자(선택 사항, 기본값은 콤마
,
).
2. STRING_AGG를 사용하는 이유
- 데이터를 요약하거나 보고할 때: 여러 행을 하나의 요약된 문자열로 표현.
- 테이블 데이터를 CSV 형태로 추출: 결합된 문자열을 외부 시스템으로 내보낼 때 활용.
- 사용자 맞춤 데이터 생성: 특정 그룹의 데이터를 하나의 문자열로 변환.
3. STRING_AGG의 사용 예시
예제 1: 고객 이름을 한 줄로 결합하기
고객 데이터를 관리하는 테이블이 있을 때, 특정 그룹의 고객 이름을 하나의 문자열로 요약할 수 있습니다.
데이터 테이블: customers
| group_id | customer_name |
|----------|---------------|
| 1 | Alice |
| 1 | Bob |
| 2 | Charlie |
| 2 | David |
쿼리:
SELECT
group_id,
STRING_AGG(customer_name, ', ') AS customer_names
FROM
customers
GROUP BY
group_id;
결과:
| group_id | customer_names |
|----------|--------------------|
| 1 | Alice, Bob |
| 2 | Charlie, David |
예제 2: 주문 내역을 하나의 문자열로 변환
이커머스 사이트에서 특정 사용자가 구매한 상품 리스트를 문자열로 결합해 사용자 맞춤 메세지를 생성할 수 있습니다.
데이터 테이블: orders
| user_id | product_name |
|---------|------------------|
| 101 | Laptop |
| 101 | Mouse |
| 102 | Keyboard |
| 102 | Monitor |
쿼리:
SELECT
user_id,
STRING_AGG(product_name, ' | ') AS purchased_products
FROM
orders
GROUP BY
user_id;
결과:
| user_id | purchased_products |
|---------|-------------------------|
| 101 | Laptop | Mouse |
| 102 | Keyboard | Monitor |
활용 예시:
“안녕하세요, 101님! 구매하신 상품: Laptop | Mouse가 준비되었습니다.”
예제 3: 중복 제거와 함께 결합
중복된 데이터를 제거하며 문자열로 결합해야 할 때는 DISTINCT
키워드를 사용합니다.
데이터 테이블: reviews
| product_id | review |
|------------|--------------|
| 201 | Excellent |
| 201 | Great |
| 201 | Excellent |
| 202 | Good |
쿼리:
SELECT
product_id,
STRING_AGG(DISTINCT review, ', ') AS unique_reviews
FROM
reviews
GROUP BY
product_id;
결과:
| product_id | unique_reviews |
|------------|--------------------|
| 201 | Excellent, Great |
| 202 | Good |
4. STRING_AGG 함수 활용 시 주의사항
- 문자열 길이 제한: 결합된 문자열의 길이는 최대 1MB를 초과할 수 없습니다. 이를 초과하면 오류가 발생합니다.
- NULL 처리:
STRING_AGG
는 기본적으로 NULL 값을 무시합니다. NULL 값을 포함하려면IFNULL
또는COALESCE
를 사용해야 합니다.
5. 실무 활용 팁
- 레포트 요약: 부서별 직원 이름, 지역별 매출 항목 등 요약된 데이터를 제공할 때 사용.
- 이커머스 맞춤화: 사용자가 구매한 상품 리스트를 요약하거나 추천 상품 메시지를 생성.
- 데이터 통합: 여러 테이블에서 추출한 데이터를 문자열로 결합해 CSV 형태로 제공.
결론
STRING_AGG
는 BigQuery에서 데이터를 요약하거나 사용자 맞춤 데이터를 생성하는 데 유용한 함수입니다. 특히, 이커머스 환경에서 고객 맞춤 메시지, 요약 보고서, 데이터 통합 등 다양한 시나리오에서 활용할 수 있습니다. 실무에서 필요한 요약 데이터를 효율적으로 처리하려면 STRING_AGG
를 꼭 활용해 보세요! 😊
답글 남기기