Fact 테이블은 Start Schema 또는 Snowflake Schema 의 중심에 있는 테이블이다. 이 테이블은 Dimension에 따라 한정된 비지니스 수치를 담고 있다.
예를 들어서 Fact_Sales 라는 판매 팩트 테이블을 구성할때, Dimension은 날짜, 상점, 제품의 Dimension으로 Star Schema의 중앙에 Fact_Sales 테이블을 구성할 수 있다.
Fact 테이블은 수치(measure)를 가지고 있고, 이상적으로는 각각의 모든 값은 모든 디멘션에 걸쳐 연결된다. 위 Fact_Sales에서는 Units_Sold가 Measure이다. 어떤 Fact의 Measure는 특정 디멘션에만 연결 될 수 있는데 디멘션에 연결되는 것에 따라서
1) 완전연관 팩트(Additive) : 모든 디멘션 기준으로 집계
2) 일부연관 팩트(Semi-Additive) : 일부 디멘션에만 집계
3) 무연관 팩트 로 구별한다(Non-Additive) : 모든 디멘션에서 집계가 의미 없음
윗 사례에서 보면 Fact_Sales 는 Date_Id로 Measure를 집계해도 의미가 있고, Store_Id, Product_Id로 집계해도 의미가 있다. 따라서 Units_Sold는 완전 연관 팩트가 된다. 만약, 이 팩트 테이블에 재고수가 추가 되게 되면 이 숫자는 Date_Id 에 대해서는 의미가 없고 Store_Id로 집계하는 것만 의미가 있다. (특정 일로 재고수를 집계하는 건 무의미하며, Store 별로 집계하는 것은 의미가 있다.)
팩트의 Measure는 1) Acquired, 2) Deprived 형태가 있다. Acquired는 운영 소스 시스템으로부터 획득된 것이고 Deprived는 DW 시스템에서 생성된 어떤 값이 된다.
팩트 테이블의 Key는 디멘션의 기본 키로 구성된다. 디멘션의 기본 키는 아무런 가치가 없는 임의의 숫자 또는 대용키(Surrogate Key)가 된다.
참고자료
- http://www.zentut.com/data-warehouse/fact-table/
- 데이터 웨어하우스 멘토 책