콘텐츠로 건너뛰기

[BigQuery] 문자열의 결합: CONCAT 함수와 || 연산자 비교

BigQuery에서 문자열을 결합할 때 사용할 수 있는 주요 방법으로는 CONCAT 함수와 || 연산자가 있다. 이 두 가지 방법은 문자열을 결합하는 데 있어 같은 결과를 제공하지만, 몇 가지 차이가 있다. 이 글에서는 실제 비즈니스 사례를 예로 들어 각각의 사용법과 그 장단점을 설명하고자 한다.

실제 비즈니스 사례: URL 생성

아래와 같은 비즈니스 요구 사항이 있다고 하자. 예를 들어, 광고 데이터베이스에서 이벤트의 상세 URL을 생성해야 한다고 가정하자. sites.hostname은 사이트의 호스트 이름을 나타내고, page_path는 특정 페이지 경로를 나타낸다. 이를 통해 완전한 URL을 생성하기 위해 https://와 이 필드들을 결합해야 한다.

이를 위해 사용할 수 있는 두 가지 방법은 다음과 같다:

|| 연산자 사용

SELECT 'https://' || sites.hostname || page_path AS full_url FROM your_table

이 방법은 문자열끼리 간단하게 || 연산자를 사용해 결합한다. https://sites.hostname 그리고 page_path를 순서대로 연결하여 최종 URL을 생성한다. 예를 들어, sites.hostnameexample.com이고 page_path/home인 경우 최종 결과는 https://example.com/home이 된다.

CONCAT 함수 사용

SELECT CONCAT('https://', sites.hostname, page_path) AS full_url FROM your_table

이 방법은 CONCAT 함수를 사용하여 문자열을 결합한다. 여러 개의 인자를 한 번에 받아서 하나의 문자열로 결합하는 방식으로, 이 경우도 최종 결과는 동일하게 https://example.com/home이 된다.

|| 연산자와 CONCAT 함수의 장단점 비교

  1. 표현의 간결성
    • || 연산자는 비교적 간단하고 직관적으로 사용할 수 있다. 코드가 짧고, 여러 문자열을 결합할 때 가독성이 좋다.
    • CONCAT 함수는 함수 호출 형식으로, 직관적이지 않을 수 있지만 여러 개의 문자열을 한 번에 결합하기에는 적합하다. 특히 많은 인자를 결합할 때 괄호를 통해 명확하게 구분할 수 있다.
  2. NULL 값 처리
    • || 연산자와 CONCAT 함수 모두 인자 중 하나라도 NULL 값이 포함되면 결과가 NULL이 된다. 따라서, NULL 값을 안전하게 처리하려면 COALESCE 같은 함수를 사용하는 것이 좋다. 예를 들어 COALESCE(sites.hostname, '')와 같이 NULL 값을 빈 문자열로 대체할 수 있다.
  3. 사용 사례
    • 간단한 두 개의 문자열을 결합하거나 결합 연산이 많지 않은 경우에는 || 연산자가 더 유리하다. 특히 코드의 가독성을 높이고자 할 때 좋다.
    • 여러 개의 문자열을 한 번에 결합하고자 할 때는 CONCAT 함수가 더 유리하다. 특히 동적으로 결합할 인자의 개수가 많을 경우 CONCAT을 사용하는 것이 더 효율적이다.
  4. 코드 유지보수 측면
    • || 연산자는 쉽게 읽히고 이해되기 때문에 단순한 경우에 좋지만, 너무 많이 사용되면 코드가 복잡해질 수 있다.
    • CONCAT 함수는 인자들이 명확하게 나열되기 때문에 긴 문자열이나 여러 요소를 결합할 때 유지보수가 상대적으로 용이하다.
  5. 속도 차이
    BigQuery에서 || 연산자와 CONCAT 함수의 성능 차이는 문자열 결합의 빈도와 데이터의 크기에 따라 다를 수 있다. 일반적으로 두 방법의 성능 차이는 크지 않지만, 문자열을 매우 많이 결합해야 하는 경우에는 차이가 있을 수 있다.

    예를 들어, 문자열을 10만 번 이상 결합하는 쿼리를 실행할 때, || 연산자가 CONCAT 함수보다 약간 더 빠르게 동작할 가능성이 있다. 이는 || 연산자가 함수 호출의 오버헤드 없이 직접적으로 문자열을 결합하기 때문이다. 그러나 이러한 성능 차이는 대부분의 일반적인 사용 사례에서 크게 느껴지지 않으며, 테스트 환경 및 데이터의 특성에 따라 달라질 수 있다.

결론

BigQuery에서 문자열을 결합하는 데 있어 CONCAT 함수와 || 연산자는 상황에 따라 선택적으로 사용할 수 있다. 간단하고 빠른 결합에는 || 연산자를, 여러 개의 문자열을 명확하게 결합해야 할 때는 CONCAT 함수를 사용하는 것이 좋다. 비즈니스 요구 사항에 따라 각 방법의 장단점을 잘 고려하여 효율적인 코드를 작성하는 것이 중요하다.