반응형

차원 – (2)시간차원

안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)

 

이번 시간에는 차원에 대해서 (그 중에 시간 차원)알아 보도록 하겠습니다. 시간 차원은 시간이라는 관점에서 선후 관계를 가지며 일정한 간격으로 생성되고 반복 됩니다. 한 시간은 60분 간격으로, 분기는 3개월 간격으로, 1년은 4분기 간격으로 생성되고 반복 됩니다.

시간 차원은 동시에 불규칙성을 가집니다. (월말이 28일, 30, 31, 윤년) 따라서 전월 동기간 대비 비교 분석을 할 때 대응되지 않는 날짜들이 나타납니다. 또한 주가 월별로 고르게 분포하지 않습니다, 따라서 주별 데이터를 월별로 집계하고자 한다면 별도의 집계 규칙이 필요 합니다.

 

불규칙성 중에서 가장 빈번하게 나타나는 것 중의 하나는 회계 년도와 관련된 것입니다. 즉 달력은 1월 1일이 새해의 출발점이지만 기업체의 경우 7월 1일이 회계연도인 경우도 있습니다.

 

또한 시계열 분석과 관련하여 기간별 속성을 추가로 요구하는 경우가 많습니다.(영업일, 휴일, 기념일 등등) 따라서 OLTP와 달리 시간 차원 테이블을 별도로 만들어 관리할 필요가 있습니다.

 

실습 방법은 차원 마법사를 이용하여 시간 데이터를 담고 있는 차원 테이블로부터 시간 관련 특성들과 매핑 시켜보도록 하겠습니다.

 

지난 시간의 표준차원의 프로젝트를 불러옵니다.

표준차원의 프로젝트가 없다면 [BIDS]를 실행하여 표준차원까지 생성 합니다.

표준차원 관련 링크

http://blog.naver.com/jevida/140162346308

 

 

[솔루션 탐색기]에서 [데이터 원본 뷰]의 Adventure Works DW.dsv를 더블 클릭 또는 마우스 오른쪽을 이용하여 [디자이너 보기]를 선택 합니다.

 

[다이어그램] 창의 빈 곳에서 마우스 오른쪽을 클릭하여 [테이블 추가/제거]를 선택 합니다.

 

[테이블 추가/제거]창에서 DimTime을 포함된 개체에 추가 합니다.

 

[솔루션 탐색기]에서 [차원]에서 [새 차원]을 선택 합니다.

 

차원 마법사에서 [기존 테이블 사용]을 선택 합니다.

 

[원본 정보 지정]에서 주 테이블을 [DimTime]을 선택 합니다.

 

 

[차원 특성 선택]에서 English Month Name, Calendar Quarter, Calendar Year을 선택 합니다.

 

[Time] 이름을 지정하고 마법사를 완료 합니다. 차원 디자이너 특성 창에 있는 Calnedar Year, Calendar Quarter, English Month Name의 Type 속성이 각각 Years, Quarters, Months인 것을 확인 합니다.

 

계층의 이름을 Calendar로 변경하고 각 수준을 Year, Quarter, Month로 이름을 변경 합니다.

 

차원 디자이너에서 [데이터 원본 뷰]에서 DimTime테이블을 확장하여 FiscalYear, FiscalQurater를 오른쪽으로 클릭하여 [열의 새 특성]을 클릭 또는 마우스 드래그를 이용하여 특성으로 끌어다 놓습니다.

 

프로젝트를 배포 합니다. 차원 디자이너의 브라우저 탭을 클릭 합니다. 차원의 각 계층 구조를 살펴 볼 수 있습니다. 계층을 English Month Name을 선택 합니다.

아래 그림에서 보듯이 월 멤버들의 순서가 알파벳 순서로 정렬되어 나타납니다. 이는 월의 올바른 순서가 아니므로 추가적인 작업이 필요 합니다.

 

[차원 구조]탭을 클릭 합니다. English Month Name을 선택하고 속성에서 Order by 속성이 Key, Keycolumn 속성이 EnglishMonthName으로 각각 설정되어 있는 것을 확인할 수 있습니다.

KeyColumn 속성을 클릭합니다.

 

키 열에서 MonthNumberOfYear을 선택합니다.

 

속성에서 NameColumn을 선택 합니다.

 

이름 열 창에서 EnglishMonthName을 선택 합니다.

 

프로젝트를 배포하고 브라우저 탭에서 다시 연결을 클릭 합니다. 월이 정상적으로 나타나는 것을 확인 할 수 있습니다. 시간 멤버는 일정한 간격으로 생성되고 반복 됩니다. 따라서 현재 Month 특성 계층의 멤버들을 보면 1월부터 12월까지 12개의 멤버가 존재하고 매년 반복 됩니다.

따라서 년도별 월 멤버들이 구분되도록 설정할 필요가 있습니다.

 

차원 구조 탭에서 EnglishMonthName 특성을 클릭하여 속성창에서 KeyColumn을 선택 합니다.

현재 멤버 키에서 CalendarYear를 추가 합니다.

 

CalendarYear를 위로 이동 합니다.

 

프로젝트를 배포하고 브라우저탭에서 다시 연결을 클릭 합니다. 년도별로 반복된는 월 멤버가 보이는 것을 확인 할 수 있습니다.

 

 

반응형

+ Recent posts