본문 바로가기
카테고리 없음

[태블로 실무] CHAR 함수와 유니코드 투명 문자로 필터 정렬 순서 고정하기

by SPACEBBAR 2026. 6. 26.

태블로에서 차원 필터의 항목 순서를 내 마음대로 바꾸려다가 막혀본 적 있으신가요? 가

나다순도 아니고, 알파벳순도 아닌 비즈니스 로직 순서로 정렬해야 할 때 말이에요.

 

저도 실무에서 정확히 이 문제에 부딪혔습니다. 제품 등급 필터를 기본 → 표준 → 프리미엄 순서로 표시하고 싶었는데, 태블로는 기본적으로 가나다순으로 정렬하기 때문에 기본 → 표준 → 프리미엄이 되어야 할 것이 기본 → 프리미엄 → 표준으로 뒤바뀌어 버렸죠.

이 문제를 해결하는 방법이 바로 유니코드 투명 문자(Invisible Character) 를 활용한 정렬 트릭입니다.

 


왜 필터 순서를 바꾸기 어려운가?

태블로의 퀵 필터(Quick Filter) — 드롭다운, 체크박스, 슬라이더 등 — 는 필터에 올라오는 값의 순서를 사용자가 직접 드래그 앤 드롭으로 바꿀 수 있는 UI를 제공하지 않습니다. 시트 안의 차원 헤더는 우클릭 → 정렬 메뉴에서 커스텀 정렬을 지정할 수 있지만, 필터 컨트롤의 항목 순서는 별도로 건드릴 방법이 없습니다.

 

결국 필터 박스 안에서 값이 나열되는 순서는 태블로가 해당 차원 필드를 정렬하는 방식 그대로입니다. 텍스트 차원이면 가나다/알파벳순, 숫자면 오름차순이 기본값이죠.

태블로는 필터 선택 박스의 순서를 바꾸는 옵션이 없다. 가나다 순으로 자동 정렬된다.

그렇다면 어떻게 해야 기본 → 표준 → 프리미엄처럼 내가 원하는 임의의 순서를 강제로 고정할 수 있을까요?


 

핵심 원리: 눈에 보이지 않는 문자를 앞에 붙인다

아이디어는 단순합니다. 각 항목 이름 앞에 정렬용 접두사를 붙여서 계산 필드를 만들고, 그 계산 필드를 필터에 사용하는 것입니다. 이때 접두사로 쓰는 문자가 화면에 보이면 ①기본, ②표준 같은 형태가 되어서 필터 UI가 지저분해집니다.

이 문제를 해결하는 것이 바로 유니코드의 투명 문자를 활용하는 방식입니다.

 

유니코드 투명 문자란?

유니코드(Unicode)는 전 세계 모든 문자를 하나의 체계로 표현하기 위한 국제 표준입니다. 10진수 코드 포인트 65520(16진수 0xFFF0)부터 65528(16진수 0xFFF8)까지의 범위는 유니코드 "Specials" 블록 안에 속하는 미할당(Unassigned) 코드 포인트입니다.

 

이 코드 포인트들은 아직 어떤 글리프(glyph, 화면에 그려지는 모양)도 배정되지 않았기 때문에 화면에 렌더링해도 아무것도 표시되지 않습니다. 그런데 문자 코드는 엄연히 존재하기 때문에, 문자열을 정렬할 때 코드 번호 순서대로 순위가 매겨집니다.

즉,

  • CHAR(65520) → 눈에 보이지 않음, 정렬 순위 1위
  • CHAR(65521) → 눈에 보이지 않음, 정렬 순위 2위
  • CHAR(65522) → 눈에 보이지 않음, 정렬 순위 3위
  • ...
  • CHAR(65528) → 눈에 보이지 않음, 정렬 순위 9위

최대 9단계의 정렬 순서를 화면에 아무것도 표시하지 않고 구현할 수 있습니다.

 

참고: 태블로는 내부적으로 문자열 정렬에 ICU(International Components for Unicode) 라이브러리를 사용합니다. ICU는 유니코드 표준을 따르기 때문에 위 코드 포인트들의 순서가 정렬에 그대로 반영됩니다. (출처: Tableau 공식 문서 - String Functions)


CHAR 함수 사용법

태블로의 CHAR 함수는 유니코드 코드 포인트 번호를 입력하면 해당 문자를 반환합니다.

CHAR(숫자)

예시:

수식 반환값

CHAR(65) A
CHAR(44032)
CHAR(65520) (투명 문자 — 화면에 안 보임)
CHAR(65521) (투명 문자 — 화면에 안 보임)

문자열 연결 연산자 +를 사용해 투명 문자를 기존 값 앞에 붙이면 됩니다.

CHAR(65520) + [필드명]

 


실전 예시: 제품 등급 필터 정렬 고정

 

상황

데이터에 제품 등급이라는 차원이 있고, 값은 기본, 표준, 프리미엄 세 가지입니다.

태블로 필터에 올리면 가나다순 정렬 때문에 기본 → 프리미엄표준 순서로 나열됩니다. 비즈니스 맥락상 기본 → 표준 → 프리미엄 순서가 맞는데도 말이죠.

 

계산 필드 만들기

메뉴에서 분석 → 계산된 필드 만들기를 선택합니다. 필드 이름은 제품 등급 (순서 지정) 정도로 짓겠습니다.

IF [제품 등급] = '기본'
THEN CHAR(65520) + [제품 등급]

ELSEIF [제품 등급] = '표준'
THEN CHAR(65521) + [제품 등급]

ELSEIF [제품 등급] = '프리미엄'
THEN CHAR(65522) + [제품 등급]

ELSE [제품 등급]
END

각 등급 앞에 코드가 작은 투명 문자를 붙였습니다. 기본(65520) < 표준(65521) < 프리미엄(65522)이므로 정렬하면 자동으로 원하는 순서가 됩니다.

 

필터에 적용하기

  1. 기존에 [제품 등급]을 필터로 사용하던 것을 제거합니다.
  2. 새로 만든 [제품 등급 (순서 지정)]을 필터 선반에 드래그 합니다.
  3. 필터 컨트롤을 확인하면 기본 → 표준 → 프리미엄 순서로 정렬된 것을 확인할 수 있습니다.

필터 박스에 표시되는 텍스트는 기본, 표준, 프리미엄처럼 보입니다. 앞에 붙인 투명 문자는 화면에 렌더링 되지 않기 때문입니다.


주의사항

1. 필터 레이블이 원본 필드와 다릅니다

[제품 등급 (순서 지정)]은 원본 [제품 등급]과 별개의 계산 필드입니다. 필터를 눌렀을 때 다른 차트나 시트에 액션이 연동되는 구조라면, 원본 필드와의 관계를 설계할 때 주의가 필요합니다.

 

2. 새로운 값이 추가되면 계산식 수정이 필요합니다

데이터에 엔터프라이즈라는 새 등급이 추가된다면, 계산 필드에 ELSEIF 구문을 추가해야 합니다. 데이터 변경이 잦은 경우라면 관리 부담이 생길 수 있습니다.

 

3. 9단계까지만 사용 가능합니다

65520~65528까지 9개의 코드 포인트를 사용할 수 있습니다. 정렬 항목이 10개 이상이면 다른 방식(예: 숫자 접두 필드를 데이터에서 관리)을 검토하세요.

 

4. 투명 문자가 포함된 필드는 다른 용도로 직접 사용하지 마세요

축 레이블, 툴팁, 텍스트 마크 등에 [제품 등급 (순서 지정)]을 직접 사용하면 투명 문자 때문에 예상치 못한 공백이 생길 수 있습니다. 화면 표시용 필드는 원본 [제품 등급]을 그대로 사용하고, 정렬 목적으로만 이 계산 필드를 활용하세요.


정리

항목 내용

사용 함수 CHAR(숫자)
활용 코드 범위 65520 ~ 65528 (최대 9단계)
원리 유니코드 미할당 코드 포인트 → 렌더링 없음, 정렬 순서는 유지
적용 대상 퀵 필터, 차원 정렬이 필요한 모든 문자열 차원
주의 레이블 표시용 필드와 분리해서 사용할 것

 

차원 필터의 순서를 고정하는 방법은 여러 가지가 있지만, 이 방법은 데이터 원본을 손대지 않고 계산 필드 하나로 해결할 수 있다는 점에서 가장 실용적인 방법 중 하나입니다. 

 

 


참고 자료


소개 및 문의 · 개인정보처리방침 · 면책조항

© 2026 블로그 이름