디멘션은 팩트 테이블에서 값을 한정해 보여주는 테이블이다. Fact 테이블이 Measures 를 포함하는데 비해서, Dimension은 Business를 기술하는 것으로 볼 수 있다. 디멘션은 팩트 테이블의 단위를 생성한다. 디멘션은 두가지 중요한 역활을 한다. 1) 쿼리 필터링/제한/그룹핑, 2) 레포트 라벨
이전 Fact Table 포스팅(Fact Table이란?)의 예제를 참고하기 바란다.
디멘션 테이블의 키값은 Surrogate Key(대용키)를 사용하는데, Surrogate Key는 데이터 소스 시스템에서 추출된 값이 아니고, 데이터 웨어하우스 내부에서 생성하고 관리하는 키이다. Surrogate Key를 사용하는 이유는 디멘션의 키가 소스 시스템의 키와 연관이 없도록 하여 소스 시스템의 키의 변경이 DW 시스템에 영향을 주지 않게 하기 위함이며, Join 성능 향상을 위해서이다.
디멘션은 수많은 외부 시스템에서 온 속성들(Attributes)로 구성될수 있다. 가장 중요한 고려 사항은 공통의 용어 보장이 된다.
디멘션 테이블에서, 소스의 데이터의 변화를 반영하는 것은 중요하다. 이런 디멘션 테이블에 변화 반영을 Slowly Changing Dimensions(SCD)이라고 한다. 이 명명의 이유는 Fact Table의 Fact에 비해서 디멘션은 천천히 변화를 축적하기 떄문이라고 한다. SCD는 Type 1,2,3 의 3가지 유형이 있다.
Type1 : 데이터의 History가 중요하지 않을떄 사용된다. 데이터 소스의 데이터가 변경 될때, 대응하는 디멘션 속성은 Overwritten 된다.
Type2 : 데이터 소스의 데이터 변화가 중요할때, 다시 말해 변화되는 데이터에 대응하는 Fact의 History 맥락을 보존해야 할 경우이다. 즉 전체 히스토리 추적이 필요한 경우이다. 이때 새로운 Row를 디멘션 테이블에 추가한다. 기존의 Row는 변화 없이 보존한다.
Type3: Attribute 가 변화하기 전후의 모든 팩트가 필요할 때이다. 새로운 Attribute를 기존의 Row에 추가하고 두 필드를 모두 업데이트 한다.
참고자료
- http://www.zentut.com/data-warehouse/dimension-table/
- http://www.zentut.com/data-warehouse/slowly-changing-dimensions/
- 데이터 웨어하우스 멘토 책