480. 다차원 OLAP 연산 - 슬라이싱과 다이싱

⚠️ 이 문서는 3차원 주사위(Cube) 모양으로 뭉쳐져 있는 거대한 데이터 덩어리에서, **특정한 하나의 조건(차원)만 얇게 포 뜨듯 잘라내어 평면(2D)으로 보거나, 주사위를 깍둑썰기하여 더 작은 미니 주사위(Sub-cube)로 만들어 분석하는 OLAP의 대표 연산인 '슬라이싱'과 '다이싱'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 드릴 다운(479번 문서)이 계층의 '깊이'를 파고드는 것이라면, 슬라이스와 다이스는 다차원 큐브의 특정한 '단면'이나 '부분'을 칼로 잘라내어 범위를 좁히는 연산이다.
  2. 슬라이싱 (Slicing): 3차원 데이터에서 **딱 1개의 차원(조건)**을 고정하여, 마치 식빵을 한 장만 잘라내듯 2차원 표(Table) 형태로 뽑아내는 연산이다.
  3. 다이싱 (Dicing): 3차원 데이터에서 **2개 이상의 차원(조건)**을 잘라내어, 원래의 거대한 주사위(Cube)를 조그만 미니 주사위(Sub-cube)로 깍둑썰기하는 연산이다.

Ⅰ. 개요: 데이터 주사위 요리하기 (Context & Necessity)

데이터 웨어하우스(DW)에 쇼핑몰의 3년 치 매출 데이터가 3차원 큐브 형태로 들어있다.

  • X축: 시간 (2024년, 2025년, 2026년)
  • Y축: 지역 (서울, 부산, 제주)
  • Z축: 상품 (옷, 신발, 가방)

사장님이 지시를 내린다.

  1. "야, 다른 연도는 다 빼고 딱 '2026년' 것만 가져와 봐!"
  2. "음, 연도는 2025~2026년만 보고, 지역은 서울이랑 부산만, 상품은 옷이랑 신발만 남겨봐!"

1번 지시처럼 축 하나를 통째로 잘라내서 평면으로 만드는 것이 슬라이싱이고, 2번 지시처럼 큐브의 모서리들을 싹둑싹둑 잘라서 조그만 큐브로 만드는 것이 다이싱이다.

📢 섹션 요약 비유: 큐브가 **'통식빵'**이라고 해봅시다. 슬라이싱은 통식빵에서 **'딱 한 장의 빵(1개의 차원 고정)'**만 얇게 잘라내서 접시(2차원)에 올리는 겁니다. 다이싱은 통식빵 전체를 칼로 이리저리 썰어서, 스프에 넣어 먹을 수 있는 '작은 식빵 깍두기(여러 차원을 조립한 작은 3차원)' 여러 개를 만들어내는 겁니다.


Ⅱ. 슬라이스 (Slicing): 단면 썰기 ★

3차원 데이터를 2차원으로 낮춰서 우리가 보기 편한 엑셀 표(Table)로 만들어주는 마법이다.

  • 조건: 무조건 딱 1개의 차원(Dimension) 값을 고정해야 한다.
  • 예시 1: [시간 = '2026년 4월']로 고정 (슬라이싱!)
    • 결과: X축(시간)이 사라지고, 화면에는 지역상품으로 이루어진 2차원 표가 나타난다.
  • 예시 2: [지역 = '서울']로 고정 (슬라이싱!)
    • 결과: 화면에는 시간상품으로 이루어진 2차원 표가 나타난다.

데이터 분석가가 "2026년의 지역별 상품 판매 현황을 뽑아주세요"라고 할 때, 백엔드에서 WHERE 시간 = 2026 조건을 거는 행위 자체가 바로 슬라이싱이다.


Ⅲ. 다이스 (Dicing): 깍둑썰기

3차원 큐브의 모양(차원 개수)은 그대로 유지하되, 크기만 작게(Sub-cube) 축소하는 연산이다.

  • 조건: 2개 이상의 차원에 대해 조건을 걸어 자른다.
  • 예시:
    • 조건 1: 시간 축에서 [2025년, 2026년]만 남긴다.
    • 조건 2: 지역 축에서 [서울, 부산]만 남긴다.
    • 조건 3: 상품 축에서 [옷, 신발]만 남긴다.
  • 결과: 원래의 거대한 큐브가 3개의 조건을 모두 만족하는 아주 앙증맞은 '미니 큐브'로 변신한다. 이 미니 큐브를 이리저리 돌려보며(Pivoting) 더욱 집중적인 분석을 수행할 수 있다.
┌──────────────────────────────────────────────────────────────┐
│           다차원 OLAP 큐브의 Slicing과 Dicing 시각화              │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│ [ 📦 원본 데이터 큐브 (시간 x 지역 x 상품) ]                         │
│                                                              │
│ 🔪 Slicing (슬라이싱: 식빵 한 장 썰기)                               │
│   조건: 시간 = '2026년' (딱 1개 차원만 고정!)                       │
│   결과: ⬛ (2차원 평면 표 탄생)                                   │
│       가로축(상품), 세로축(지역)만 남음.                            │
│                                                              │
│ 🔪 Dicing (다이싱: 깍둑썰기)                                      │
│   조건: 시간 = '2026년' AND 지역 = '서울' AND 상품 = '옷'         │
│   결과: 🧊 (조그만 3차원 미니 주사위 탄생)                          │
│       차원은 그대로 3개지만 덩치가 1/10로 줄어들었음.                 │
└──────────────────────────────────────────────────────────────┘

Ⅳ. 결론

"조건절(WHERE)은 수학적으로 큐브를 자르는 행위다." 관계형 데이터베이스(RDBMS) 세계에서 WHERE 절은 단순히 데이터를 거르는 필터링에 불과하다. 하지만 다차원 모델링이 적용된 데이터 웨어하우스(OLAP)의 세계에서 WHERE 조건은 거대한 3차원 큐브를 칼로 썰어내는 수학적 절단(Slice) 연산이 된다. 우리가 태블로(Tableau) 같은 데이터 분석 툴에서 '2026년'이라는 필터 버튼을 클릭할 때마다, 보이지 않는 곳에서 백엔드 엔진은 거대한 큐브를 슬라이싱하고 다이싱하여 화면에 그 단면을 렌더링하고 있는 것이다.


📌 관련 개념 맵

  • 관련 연산 1: Drill-down / Roll-up (479번 문서 - 줌인/줌아웃)
  • 관련 연산 2: Pivoting (481번 문서 - 큐브 돌려보기)
  • 시스템 구조: OLAP (476번 문서), Data Cube
  • DB 벤더 기능: Oracle의 OLAP DML, MS SQL의 Analysis Services(SSAS)

👶 어린이를 위한 3줄 비유 설명

  1. 거대한 수박(데이터 큐브)이 있어요. 이 수박의 단면이 어떻게 생겼는지 보고 싶어요.
  2. 슬라이싱(Slicing)은 칼로 수박을 딱 한 번 잘라서 그 동그란 단면(2차원)만 쟁반에 올려서 보는 거예요.
  3. 다이싱(Dicing)은 수박 전체를 가로, 세로, 높이로 여러 번 깍둑썰기해서 과일 화채에 넣기 좋은 조그만 수박 조각(미니 큐브)들을 만들어 내는 거랍니다!