본문 바로가기

테크놀로지와 데이터

[Tableau] REGEXP_REPLACE 함수를 활용한 문자열을 숫자로 보이게 하기

Intro

안녕하세요, 브래키츠 막내 태블로 매니저입니다.

오늘은 태블로 활용팁으로 문자열에서 일치하는 패턴을 찾아 대체하는 REGEXP_REPLACE ( ) 함수에 대해 소개하도록 하겠습니다.

 

 

Data

※ 대시보드에 사용된 데이터는 데모용으로 회사 내에서 자체적으로 수집한 샘플 데이터입니다.

 

상품 관련 대시보드를 제작하기 위해 다음과 같은 워크시트 초안을 만들었습니다.

카테고리 - 상품 이미지 - 브랜드 - 상품명 - 리뷰 요약 순으로 상품정보를 제공합니다.

 

 

 

Situation

해당 시트를 대시보드에 올려보니 이미 자리를 차지하고 있던 기존 워크시트들 때문에 리뷰 요약이 잘리는 현상이 발생했습니다. 기존 워크시트들의 크기를 조절해 보았지만 더 이상 줄일 수 없어 해당 워크시트가 차지하는 공간을 줄여야 했습니다. 보통 통일성을 위해 대시보드의 크기를 먼저 지정하고 시작하는 데, 워크시트들을 배치하다 보면 공간 활용에 대한 어려움을 늘 겪곤 합니다.

 

 

Solution

각각의 열로 존재하는 브랜드, 상품명, 가격을 하나의 열로 합쳐 너비를 줄이고자 합니다.

‘상품정보’라는 새로운 계산된 필드를 만들어보겠습니다. 문자열끼리의 연결은 ‘+’를 통해 가능합니다.

주의하셔야 할 점은 상품가격은 측정값(숫자)이기 때문에 STR()로 변환한 후 더해주셔야 한다는 것입니다. 그렇지 않으면 다음과 같은 오류를 만나게 됩니다. 값 문자열과(와) 값 정수을(를) 더할 수 없습니다. 즉,  문자열과 숫자를 혼합해서 연산할 수 없습니다.

 

// 상품정보
[브랜드]+[상품명]+STR([상품가격])

 

줄 바꿈과 빈 줄(엔터)을 넣고 가격에 ‘원’을 붙여서 형태를 정리해보았습니다.

그런데 문제가 발생했습니다. 상품가격의 데이터 유형이 STR(문자로 바뀌면서 숫자 서식을 적용할 수 없게 되었습니다. 쉼표(,)로 자릿수를 구분하지 못하는 것이죠. 가격이 얼마인지 한눈에 들어오지 않습니다.

이를 해결하기 위해 REGEXP_REPLACE( ) 함수가 등장합니다.

 

REGEXP_REPLACE( ) 함수의 사용 방법은 다음과 같습니다.

REGEXP_REPLACE(문자열, 패턴, 대체)

문자열에서 일치하는 패턴을 찾아 교체 문자열로 대체합니다.

우리의 목표는 상품가격에서 숫자 패턴을 찾아 천 단위로 구분하고 구분자(,)를 붙이는 것입니다.


기본 골조는 다음과 같습니다.

ex) 39,500,000

- 맨 앞 숫자는 최대 1~3개

- 뒷부분 숫자는 3개씩 그룹 지어져야 하며

- 마지막 숫자 그룹 뒤에는 숫자가 오면 안 된다.

 


 

이를 정규 표현식으로 작성하면 REGEXP_REPLACE(STR([상품가격]),"\d{1,3}(?=(\d{3})+(?!\d))","$0,")와 같이 작성할 수 있습니다.

 

패턴 부분을 분석해 볼까요?

  • \d{1,3}: 숫자는 최대 1~3개
    • \d: 모든 숫자 [0-9]
    • {1,3}: 숫자의 개수가 1~3개
  • (?=(\d{3})+(?!\d))
    • (  ): 그룹화
    • ?: 앞의 패턴 문자가 0개 또는 1개 존재할 수도 있고(=), 존재하지 않을 수도 있다(!)
    • (\d{3}) : 숫자가 3개인 그룹
    • +(?!\d) : 앞의 그룹 뒤에는 숫자가 오지 않아야 한다.

 

마지막으로 교체 문자열에 대해 설명하면, $0는 찾은 패턴 그 자체를 나타냅니다. 찾은 패턴 그 자체($0)에 쉼표(,)를 추가하게 됩니다.

 

최종적으로 정리하면 다음과 같습니다.

//상품정보

[브랜드]+ "

" + [상품명]+ "

" + REGEXP_REPLACE(STR([상품가격]),"\d{1,3}(?=(\d{3})+(?!\d))","$0,")+"원"

 

BEFORE                                                                             AFTER

BRFORE

 

 

Wrap up

정규 표현식이 어렵지 않으셨나요? 저 역시 정규 표현식을 처음 마주했을 때 직관적이지 않아서 어려워했던 기억이 있습니다. 다행히도 자주 쓰는 표현식의 경우 구글링을 통해 찾을 수 있으며, 본인이 만든 정규 표현식이 맞는지 테스트해보고 싶으면 https://regexr.com에서 도움 받으실 수 있습니다.

 

브래키츠 막내의 첫 태블로 팁 공유였습니다. 여러분에게 유익한 정보가 되길 바라며 다음에 더 흥미로운 태블로 이야기로 찾아뵙도록 하겠습니다!