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

[태블로 기본 개념] 태블로 확장자 완전 정복! *.twb만 쓰다가 낭패 본 적 있다면 반드시 읽어라

by SPACEBBAR 2026. 6. 22.

 

 

태블로를 쓰면서 이런 경험 한 번쯤 있지 않나요?

폴더 이름을 바꿨을 뿐인데 워크북이 열리지 않는다. 데이터가 많아질수록 화면 전환이 눈에 띄게 느려진다. 동료에게 파일을 보냈더니 "데이터가 없다"는 연락이 온다.

이 세 가지 문제, 사실 원인은 하나다. 태블로 파일 확장자의 구조를 이해하지 못한 채 .twb 하나만 써왔기 때문이다.

태블로에는 5가지 파일 형식이 있다. 각각이 무엇을 담고 있는지, 어떻게 데이터를 참조하는지를 알면, 위의 세 가지 문제는 애초에 생기지 않는다. 오늘은 이 구조를 완전히 해체해서 설명하겠다.

 


태블로 파일 5종 한눈에 비교

확장자 풀네임 데이터 포함 여부 데이터 원본 연결 방식 주요 용도

.twb Tableau Workbook ❌ 미포함 실시간 라이브 연결 서버·클라우드 배포용 워크북
.twbx Tableau Packaged Workbook ✅ 포함 (추출 또는 로컬 파일) 자체 내장 로컬 공유·오프라인 배포·백업
.hyper Tableau Extract ✅ 포함 추출 엔진 (Hyper DB) 고성능 데이터 스냅샷
.tds Tableau Data Source ❌ 미포함 실시간 연결 정보만 저장 서버 게시용 데이터 원본·팀 표준화
.tdsx Tableau Packaged Data Source ✅ 포함 자체 내장 데이터 포함 연결 공유

 

각 확장자 완전 해부

1. .twb — 워크북의 기본, 하지만 함정이 있다

.twb는 태블로가 기본으로 저장하는 형식이다. 파일 내부를 열어보면 실제로는 XML 텍스트 파일이다. 시트 레이아웃, 계산 필드, 색상·폰트 서식, 필터 조건이 모두 텍스트로 기록된다.

핵심 구조: 데이터를 직접 담지 않는다. 대신 데이터 원본의 경로(path)와 연결 정보만 저장한다. 파일을 열 때마다 그 경로로 찾아가서 실시간으로 데이터를 불러온다.

예시 내부 구조 (XML 일부):
<datasource name='orders' connection-type='excel-direct'>
  <connection class='excel-direct'
    filename='C:\Users\연욱\Documents\sales_data\orders.xlsx' />
</datasource>

 

왜 경로가 바뀌면 열리지 않는가?

파일에 저장된 건 주소(경로)다. 데이터 자체가 아니다. C:\Users\Documents\sales_data\orders.xlsx라고 기록돼 있는데, 폴더명을 sales_2026으로 바꾸는 순간 그 주소는 존재하지 않게 된다. 태블로는 데이터를 찾지 못해 오류를 낸다. 파일을 이메일로 보내도 같은 이유로 수신자 컴퓨터에서는 동작하지 않는다.

 

왜 데이터가 많으면 느려지는가?

라이브 연결 상태에서는 필터를 바꾸거나 시트를 전환할 때마다 원본 데이터 전체에 쿼리를 날린다. 100만 행 Excel 파일이라면, 뷰를 클릭할 때마다 100만 행을 다시 읽는다. 이것이 .twb + 라이브 연결 조합의 구조적 한계다.

 

언제 써야 하나: Tableau Server·Cloud에 배포하는 환경, 또는 DB 직접 연결처럼 경로가 절대 바뀌지 않는 환경에서 개발할 때. 로컬 파일 기반으로 혼자 쓴다면 .twbx가 훨씬 안전하다.


2. .twbx — 현업에서 가장 많이 쓰이는 실전 형식

.twbx는 .twb의 한계를 정면으로 해결한 형식이다. 내부적으로는 ZIP 압축 파일이며, 압축을 풀면 다음 구조가 나온다.

sample.twbx (실제로는 ZIP)
├── sample.twb          ← 워크북 XML
└── Data/
    └── orders.hyper    ← 추출된 데이터 스냅샷
    또는
    └── orders.xlsx     ← 로컬 파일 원본

데이터를 워크북과 함께 패키징하기 때문에 파일 하나만 전달하면 수신자가 아무 설정 없이 열 수 있다.

 

핵심은 "추출(Extract)"로 저장하는 것이다. 라이브 연결 상태에서 .twbx로 저장하면 로컬 파일 자체를 복사해서 패키징하지만, 추출로 전환 후 저장하면 .hyper 형태로 데이터를 내장한다. 이 상태에서는 원본 파일이 삭제되거나 경로가 완전히 바뀌어도, 심지어

 

다른 컴퓨터로 옮겨도 .twbx 하나만 있으면 그대로 열린다. 경로 의존성이 완전히 사라진다.

실무 팁: 데이터 원본 탭 우측 상단의 [라이브] 토글을 [추출]로 바꾸고 저장하면, 이후부터는 .twbx로 저장할 때 .hyper가 자동으로 내장된다. 이 한 번의 설정이 경로 오류를 영구적으로 막는다.

 

주의할 점: 데이터 스냅샷을 내장하기 때문에 파일 크기가 크다. 수백만 행 데이터를 .twbx로 패키징하면 파일 용량이 수 GB에 달할 수 있다. 이메일 첨부나 메신저 전송이 불가능해지는 상황이 생기므로, 이런 경우엔 Tableau Server/Cloud를 통한 게시를 선택해야 한다.

 

언제 써야 하나: 동료·고객에게 로컬 파일로 전달할 때, 오프라인 환경에서 데모해야 할 때, 특정 시점의 데이터 상태를 백업할 때. 서버·클라우드 환경이 없는 조직에서는 사실상 표준 배포 형식이다.


3. .hyper — 태블로의 진짜 엔진

.hyper는 Tableau의 자체 인메모리 데이터베이스 엔진인 Hyper가 만들어내는 추출 파일이다. 2018년 태블로가 Hyper Analytics를 인수하면서 기존 .tde 형식을 대체했다.

 

왜 빠른가: Hyper 엔진은 컬럼 지향(columnar) 저장 방식을 사용한다. 일반적인 행 기반 Excel이나 CSV와 달리, 특정 열의 합계·평균을 계산할 때 해당 열 데이터만 읽는다. 이 때문에 집계 쿼리 속도가 OLAP 수준으로 빠르다. Tableau 공식 벤치마크에 따르면 10억 행 데이터셋에서도 초 단위 응답이 가능하다.

 

독립 활용: .hyper 파일은 Tableau Hyper API를 통해 Python/Java로 직접 읽고 쓸 수 있다. ETL 파이프라인에서 태블로 없이도 데이터를 .hyper로 변환해 서버에 올리는 자동화가 가능하다.

# Hyper API 활용 예시 (Python)
from tableauhyperapi import HyperProcess, Connection, Telemetry

with HyperProcess(telemetry=Telemetry.SEND_USAGE_DATA_TO_TABLEAU) as hyper:
    with Connection(endpoint=hyper.endpoint, database='orders.hyper') as conn:
        result = conn.execute_list_query("SELECT SUM(sales) FROM orders")

언제 써야 하나: 대용량 데이터를 빠르게 분석해야 할 때 추출을 생성하면 .hyper가 만들어진다. 직접 조작이 필요한 경우 Hyper API를 활용한다.


4. .tds — 서버·클라우드 배포의 첫 번째 단계

.tds는 데이터 원본 연결 정보만 따로 떼어낸 파일이다. 서버 주소, 데이터베이스명, 스키마, 계산 필드, 그룹, 집합, 별칭 등 "이 데이터를 어떻게 연결하고 해석하는지"에 대한 메타데이터가 담긴다. 데이터 자체는 없다.

 

현업에서의 실제 배포 흐름:

Tableau Server나 Tableau Cloud에 워크북을 올릴 때, 대부분의 현업 환경에서는 다음 순서를 따른다.

① 데이터 원본(.tds)을 먼저 서버/클라우드에 게시
   → 서버가 DB 연결 정보를 인식하고 인증 설정 완료
   
② 워크북(.twb)에서 로컬 연결 대신 서버의 데이터 원본을 참조하도록 변경
   → 데이터 원본 탭 > [서버에 게시된 데이터 원본으로 교체]
   
③ 워크북(.twb)을 서버/클라우드에 게시
   → 서버가 이미 알고 있는 데이터 원본을 참조하므로 연결 오류 없음

이 순서를 지키지 않으면 워크북을 올렸을 때 "데이터 원본을 찾을 수 없습니다" 오류가 발생한다. .tds 먼저, .twb 나중. 이 순서가 Tableau Server/Cloud 배포의 기본이다.

 

왜 이 방법이 가장 많이 쓰이나: 데이터 원본을 서버에 독립적으로 게시해두면, 워크북이 여러 개여도 하나의 데이터 원본을 공유한다. DB 연결 정보나 계산 필드를 수정할 때 .tds 하나만 바꾸면 그것을 참조하는 모든 워크북에 자동 반영된다. 유지보수 비용이 극적으로 줄어든다.

 

언제 써야 하나: Tableau Server/Cloud에 배포할 때의 선행 단계. 팀 전체가 같은 DB 연결과 계산 필드 정의를 공유해야 할 때.


5. .tdsx — 데이터까지 담은 연결 파일

.tdsx는 .tds + 데이터를 패키징한 형식이다. .twbx가 워크북을 패키징하듯, .tdsx는 데이터 원본을 패키징한다.

 

.twbx와의 차이: .twbx는 시각화(워크북) 포함, .tdsx는 연결 설정만 포함. 데이터 원본 자체를 독립적으로 공유해야 할 때 사용한다. 예를 들어, 데이터 팀이 분석팀에게 "이 데이터를 써서 알아서 시각화해봐"라고 전달할 때 .tdsx가 적합하다.

 

언제 써야 하나: 시각화 없이 데이터 원본만 공유해야 할 때. 데이터 팀과 시각화 팀이 분리된 조직 구조에서.


 

*.twb의 3가지 함정과 올바른 대안

현업에서 아무 생각 없이 .twb를 기본값으로 쓰다 보면 반드시 다음 세 가지 문제를 만난다.

 

함정 1 — 경로 변경 시 열리지 않음

원인: .twb는 절대 경로(absolute path)로 데이터 위치를 기록한다. 폴더명, 드라이브명, 사용자명 하나만 바뀌어도 연결이 끊긴다.

대안: 데이터를 추출(Extract)로 전환해서 .twbx로 저장한다. 추출된 .twbx는 경로 변경, 컴퓨터 교체, 폴더 재구성에 영향을 받지 않는다.

팁: 데이터 원본 편집 창에서 "데이터 원본 편집 > 연결 편집"으로 경로를 수동으로 수정할 수 있지만, 이건 땜질이다. 구조적으로 해결하려면 추출 전환 후 .twbx 저장, 또는 서버 게시가 맞다.


함정 2 — 대용량 데이터에서 극심한 성능 저하

원인: 라이브 연결은 뷰를 렌더링할 때마다 원본 데이터에 쿼리를 실행한다. Excel, CSV 같은 파일 기반 원본은 이 쿼리를 파일 전체 스캔으로 처리한다.

수치로 보면: 10만 행 Excel 파일에서 라이브 연결 상태로 필터를 바꿀 때마다 Excel I/O가 발생한다. 동일한 데이터를 .hyper로 추출했을 때 대비 수십 배 느릴 수 있다. Tableau 내부 테스트에서 Hyper 엔진은 TPC-H 벤치마크 기준으로 기존 TDE 대비 5배 이상 빠른 결과를 보였다.

대안: 데이터 원본 탭에서 "라이브" 버튼 옆의 "추출"로 전환한다. 이 순간부터 태블로는 .hyper 파일을 만들어 로컬에 캐싱하고, 쿼리는 Hyper 엔진에서 처리된다. 성능이 극적으로 개선된다.

데이터 원본 탭 > 우측 상단 [라이브] ↔ [추출] 토글
→ [추출]로 전환 후 [지금 추출] 클릭
→ .hyper 파일 생성 완료
→ 이 상태로 [다른 이름으로 저장 > *.twbx] 선택 시 데이터 내장 완료

함정 3 — 동료에게 전달해도 열리지 않음

원인: .twb를 보내면 수신자 컴퓨터에 원본 데이터 파일이 없다. 경로도 다르다. 결과: 오류.

대안: 반드시 추출 전환 후 .twbx로 저장해서 전달한다. 파일 > 다른 이름으로 저장 > 형식: 패키지된 워크북(*.twbx). 데이터가 함께 패키징되어 수신자가 바로 열 수 있다.


 

현업에서 실제로 쓰이는 두 가지 패턴

이론보다 중요한 건 실제 현장에서 어떻게 쓰이느냐다. 현업에서는 크게 두 가지 패턴이 반복된다.


패턴 A — 로컬 환경: .twbx 추출 저장

서버나 클라우드 인프라 없이 로컬에서 작업하거나, 동료·고객에게 파일을 직접 전달해야 하는 상황에서의 표준 패턴이다.

[작업 흐름]

1. 데이터 연결 후 개발 시작 (.twb 상태)
        ↓
2. 데이터 원본 탭 > [추출]로 전환
   → .hyper 파일 자동 생성, 성능 확보
        ↓
3. 파일 > 다른 이름으로 저장 > *.twbx 선택
   → .twb + .hyper가 하나의 파일로 패키징
        ↓
4. .twbx 파일 하나만 전달
   → 수신자 환경, 경로, OS 무관하게 즉시 열람 가능

이 패턴의 핵심은 "추출 전환 → .twbx 저장"의 두 단계다. 추출 없이 .twbx로 저장하면 로컬 원본 파일을 복사해서 패키징하므로, 원본 파일이 Excel이라면 Excel이 그대로 내장된다. 추출을 먼저 하면 훨씬 압축율이 좋고 열람 성능도 높은 .hyper 형태로 내장된다.


 

패턴 B — 서버·클라우드 환경: .tds 먼저, .twb 나중

Tableau Server나 Tableau Cloud를 운영하는 조직에서 워크북을 배포할 때의 표준 패턴이다.

[작업 흐름]

1. 로컬에서 DB 연결 후 데이터 원본 정의
   → 계산 필드, 집합, 그룹 등 메타데이터 완성
        ↓
2. 데이터 원본 탭 > [서버에 게시] 선택
   → .tds가 Tableau Server/Cloud에 게시됨
   → 서버가 DB 인증·연결 정보 보관
        ↓
3. 워크북(.twb)에서 로컬 연결을 서버 게시 데이터 원본으로 교체
   → 데이터 원본 탭 > 해당 원본 우클릭 > [서버의 데이터 원본으로 교체]
        ↓
4. 워크북(.twb)을 서버/클라우드에 게시
   → 서버가 이미 알고 있는 데이터 원본 참조 → 연결 오류 없음
        ↓
5. 이후 데이터 원본 변경 필요 시 .tds만 수정·재게시
   → 해당 .tds를 참조하는 모든 워크북 자동 반영

이 패턴의 장점은 데이터 원본과 워크북의 관리가 분리된다는 점이다. 데이터 팀이 .tds를 관리하고, 시각화 팀이 .twb를 관리하는 역할 분담이 자연스럽게 이루어진다. DB 접속 정보가 바뀌거나 스키마가 수정되어도 .tds만 업데이트하면 된다.


 

상황별 확장자 선택 가이드 (업데이트)

상황 권장 형식 이유

혼자 개발 중, 로컬 파일 기반 .twbx (추출 전환 후) 경로 오류 방지 + 성능 확보
동료·고객에게 파일로 전달 .twbx (추출 전환 후) 데이터 포함 단일 파일, 환경 무관 열람
오프라인 데모·발표 .twbx (추출 전환 후) 네트워크·DB 연결 없이도 동작
Tableau Server/Cloud 배포 .tds 먼저 게시 → .twb 게시 데이터 원본·워크북 분리 관리
팀 공통 DB 연결 설정 관리 .tds (서버 게시) 단일 원본 수정으로 전체 반영
데이터만 다른 팀에 전달 .tdsx 시각화 없이 데이터 원본만 공유
대용량 데이터 성능 개선 추출 전환 → .hyper 생성 Hyper 엔진 활용

 

마치며: 확장자를 모르면 삽질을 반복한다

태블로를 처음 배울 때는 .twb만 써도 불편함을 모른다. 파일도 작고 저장도 빠르다. 문제는 실제 업무가 시작되면서부터다. 경로가 바뀌고, 데이터가 커지고, 파일을 공유해야 하고, 서버에 올려야 하는 순간이 온다.

정리하면 간단하다.

  • 로컬에서 혼자 쓰거나 파일로 공유할 때: 추출 전환 후 .twbx
  • 서버·클라우드 배포할 때: .tds 먼저 게시 → .twb 나중 게시
  • 팀 표준 연결 관리: .tds를 서버에 게시해서 단일 원본으로 운영
  • 데이터만 넘길 때: .tdsx

태블로를 잘 쓴다는 건 기능을 많이 아는 게 아니다. 이런 기초 구조를 정확히 이해하고 상황에 맞게 선택하는 것, 그게 실력이다.


 

이 글이 도움이 됐다면, 태블로 기본개념 시리즈의 다음 글도 확인해 보세요.

 

 

 

출처

https://help.tableau.com/current/pro/desktop/en-us/default.htm

 

Tableau Desktop and Web Authoring Help

Tableau Help.

help.tableau.com

 

 


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

© 2026 블로그 이름