STRING_AGG 함수

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를 꼭 활용해 보세요! 😊


게시됨

카테고리

작성자

댓글

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다