차원 – (3)롤-플레잉 차원

 

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

 

이번 시간에는 차원에 대해서(그 중에 롤-플레잉 차원) 알아 보도록 하겠습니다. 차원 테이블과 팩트 테이블 사이에는 참조 관계가 존재 합니다. 대부분의 경우에는 하나의 관계자 존재하는데 경우에 따라서 여러 개의 관계가 존재 할 수 있습니다. 이 때 각 관계는 역할에 따라 구분이 됩니다.

팩트 테이블이 동일한 차원 테이블을 여러 역할을 가지고 참조하는 경우 해당 차원 테이블을 기반으로 정의한 차원을 큐브에 포함시킬 때 각 역할별로 차원을 별도로 정의하지 않고 하나의 차워을 역할별로 재활용할 수 있습니다. 이를 롤-플레잉 차원이라고 합니다.

 

실습을 통해서 롤-플레잉 차원에 대해서 알아 보도록 하겠습니다.

 

이번 실습을 위해서는 반드시 지난 시간 작업이 선행 되어야 합니다.

시간 차원 관련 링크

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

 

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

 

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

 

[테이블 추가/제거] 창에서 [FactResellerSales]를 포함된 개체에 추가하고 확인을 클릭 합니다.

 

 

새로 추가된 테이블을 보면 아래 그림과 같이 FactResellerSales와 DimTime 사이에 세 개의 관계가 보입니다.

[솔루션 탐색기]에서 [큐브]에서 마우스 오른쪽을 클릭하여 [새 큐브]을 선택 합니다

 

 

큐브 마법사가 시작되면 [생성 방법 선택]에서 [기존 테이블 사용]을 선택 합니다.

 

 

[측정값 그룹 테이블 선택]에서 [FactResellerSales]를 선택 합니다.

 

 

측정값 선택에서는 Order Quantity, Sales Amount를 선택 합니다.

 

 

기존 차원을 추가합니다.

 

 

새 차원을 선택 합니다.

 

 

큐브 이름을 지정하고 마법사를 완료 합니다.

 

아래 그림에서 보면 차원 창에 Due Date, Order Date, Ship Date라는 세 개의 롤-플레잉 차원이 자동으로 추가된 것을 확인 할 수 있습니다. Time 차원을 큐브 차원으로 추가시 Dim Time 테이블과 FactInternetSales 테이블 사이에 관계들을 기반으로 자동 처리된 것입니다.

 

완료 되었으면 프로젝트를 배포 합니다.

 

차원 – (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를 위로 이동 합니다.

 

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

 

 

차원 – (1)표준차원

 

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

 

이번 시간에는 차원에 대해서 (그 중에 표준 차원)알아 보도록 하겠습니다. 표준 차원은 가장 일반적인 차원을 의미 합니다.

 

실습 방법은 차원 마법사를 이용하여 기존 테이블로부터 차원을 생성합니다. 차원 마법사를 이용하여 생성한 차원은 차원 디자이너를 사용해 추가적인 작업 및 유지보수가 가능 합니다, 차원 디자이너에서 차원 구조를 검토하고 속성을 변경하고 차원 데이터를 조회해 볼 수 있습니다.

 

[BIDS]를 실행하여 [Analysis Services 프로젝트]를 생성 합니다.

 

[솔루션 탐색기]에서 [데이터 원본]에서 마우스 오른쪽을 클릭하여 [새 데이터 원본]을 선택 합니다. 데이터 원본은 Analysis Services가 차원이나 큐브를 생성할 때 사용하는 기저 데이터를 의미하며 주로 데이터웨어하우스나 데이터마트로 구축 됩니다. 차원이나 큐브를 생성할 때 일반적으로 어디로부터 데이터를 가져오는지 설정하는 데이터 원본 추가 작업을 가장 먼저 하게 됩니다.

데이터 원본은 연결할 서버와 연결할 때 필요한 인증 정보를 포함하는 연결 문자열을 포함하고 있습니다.

 

[데이터 원본 마법사]가 나타나면 SNAC(SQL Native Client)를 사용하여 연결을 만듭니다.

 

 

[솔루션 탐색기]에서 [데이터 원본 뷰]에서 마우스 오른쪽을 클릭하여 [새 데이터 원본 뷰]를 선택 합니다.

[데이터 원본]에는 차원과 큐브 용도외의 관리용 테이블도 존재 합니다. 또한 비즈니스 용어가 아닌 개발자 용어로 관리됩니다, 필요한 데이터가 누락되거나 형식이 맞지 않을 수도 있기에 데이터 원본에서 필요한 스키마 정보만 선택적으로 가져오고 필요에 따라 일부 데이터 처리를 할 필요가 있습니다. 이러한 문제를 논리적으로 해결하기 위하여 [데이터 원본 뷰]를 사용합니다. 또한 테이블 이름이나 열이름 등을 비즈니스 용어로 표현 함으로써 보다 사용자 친화적으로 접근 합니다.

 

[새 데이터 원본 뷰 마법사]가 나타나면 앞에서 만들었던 [데이터 원본]을 선택 합니다.

 

[테이블 및 뷰 선택]에서 DimProduct, DimProductCategory, DimProductSubCategory를 포함된 개체로 이동 합니다.

(세 개의 테이블이 제품 관련 차원테이블이 정규화 되어 있음.)

 

 

[마법사 완료]에서 차원 이름을 지정하고 완료 합니다.

 

물리적인 참조 관계를 기반으로 자동으로 테이블간 관계가 표시 됩니다.

 

 

[솔루션 탐색기]에서 [차원]을 마우스 오른쪽을 클릭하여 [새 차원]을 선택 합니다.

 

[생성 방법 선택]에서 [기존 테이블 사용]을 선택 합니다.

 

[원봉 정보 지정]에서 [데이터 원본 뷰]를 선택 하고 [주 테이블]을 선택 합니다.

[키 열]과 [이름 열]을 선택 합니다.

 

[관련 테이블 선택]에서는 자동으로 테이블이 선택되어 있습니다.

 

 

[차원 특성 선택]에서 Color, Price, Size를 선택 합니다.

 

EnglishProductCategoryName의 특성 이름을 Category로 변경 합니다.

 

차원 이름을 지정하고 마법사를 완료 합니다.

 

차원 디자이너에서 [Dim Product] 특성의 이름을 [Product]로 변경 합니다.

 

차원 디자이너의 브라우저 탭으로 이동 합니다. 아직은 BIDS에서 차원 정의만 한 상태라서 차원 구조를 탐색 하지 못합니다. [배포]를 클릭합니다.

 

 

[실행]을 선택하면 차원이 서버로 배포되어 생성 됩니다.

 

정상적으로 배포 처리가 완료 되면 다음과 같은 화면이 나타납니다. 만약 빨간색의 오류가 발생한다면 문제점을 해결한 후 다시 배포를 합니다,

 

 

차원 디자이너에서 다시 연결 버튼을 클릭하면 특성 계층별로 차원 구조를 살펴 볼 수 있습니다.

차원 마법사를 이용하여 차원을 만든 후에 차원 디자이너를 이용하여 수정 및 유지 관리할 수 있습니다. 차원 테이블의 열을 특성으로 추가하면 해당 특성은 기본적으로 계층을 가집니다. 계층을 가진다는 것은 데이터를 그룹화 하는데 사용할 수 있음을 의미 합니다.

계층을 [List Price]로 변경 합니다. 그림과 같이 가격 멤버가 불규칙적으로 보입니다. 비즈니스적으로는 큰 의미 없는 구분입니다.

 

[차원 구조]탭으로 이동하여 [List Price] 특성을 선택하고 [속성] 창에서 AttributeHierarchyEnabled 속성을 [False]로 변경 합니다. 이 때 [List Price]의 특성의 아이콘은 회색으로 바뀌며 비활성화 됩니다.

 

프로젝트를 배포 후 다시 연결하여 계층 리스트에 보면 [List Price]가 나타나지 않습니다.

계층을 [Product]를 선택하고 [멤버 속성]을 클릭한 후 [List Price]를 선택 합니다.

 

아래 그림과 같이 [List Price]를 더 이상 특성 계층으로 활용하지는 못하지만 Product에 대한 멤버 속성으로 활용이 가능 합니다.

 

다음에는 시간 차원에 대해서 알아 보도록 하겠습니다.

 

'SQL Server > SSAS 강좌' 카테고리의 다른 글

06 - SSAS 차원 - (3) 롤-플레잉 차원  (0) 2015.07.15
05 - SSAS 차원 - (2) 시간 차원  (0) 2015.07.15
04 - SSAS 차원 - (1) 표준 차원  (0) 2015.07.15
03 - SSAS 큐브 조회  (0) 2015.07.15
02 - SSAS 큐브 만들기  (0) 2015.07.15
01- SSAS 환경 구축  (0) 2015.07.15

큐브 조회

 

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

이번 시간에는 지난 시간에 만든 큐브를 조회 하도록 하겠습니다.

[큐브 만들기 관련 링크]

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

 

BIDS에서 작업한 내용은 Analysis Services 서버에 연결하지 않은 상태에서 오프라인으로 저장 됩니다. 따라서 차원과 큐브의 실제 물리적인 구조와 데이터를 조회 하려면 로컬에 파일로 저장된 OLAP 개체 정의 정보들을 서버로 옮기고 그에 따른 처리 작업을 해주어야 합니다.

솔루션 탐색기에서 [Adventure Works DW Cube]를 마우스 오른쪽을 클릭하여 [처리]를 선택 합니다. 이 작업은 BIDS에서 오프라인으로 정의한 OLAP를 서버에 생성 합니다.

 

[처리 큐브] 창이 나타나면 [실행]을 선택 합니다.

 

큐브가 정상적으로 처리된 것을 확인 할 수 있습니다.

 

 

[솔루션 탐색기]의 차원에서 [Dim Time.dim]을 더블 클릭 합니다. 그리고 [브라우저] 탭을 클릭합니다.

[계층]에서 [월]을 선택하고 계층 구조를 펼쳐 봅니다. 차원에 속하는 특성 계층은 ALL 수준과 리프 수준으로 구성 됩니다.

 

[계층]을 선택하고 계층 구조를 펼쳐 봅니다. 특성 계층과 달리 사용자 계층은 드릴다운/업 경로를 가지고 계층 구조가 만들어 집니다.

 

[솔루션 탐색기]에서 [Adventure Works Dw.cube]에서 마우스 오른쪽을 클릭하여 [디자이너 보기] 또는 더블 클릭합니다. 그리고 [브라우저] 탭을 클릭 합니다.

 

측정값 그룹에서 [Internet Sales Amount]와 [Reseller Sales Amount] 측정값을 데이터 필드로 끌어다 놓습니다.

차원에서 [Order Date]의 [Year]을 행 필드로 끌어다 놓습니다.

 

아래 그림과 같이 년도별 실적을 볼 수 있습니다.

추가로 [Quarter]를 열 필드로 끌어다 놓습니다,

 

년도별 분기별 판매 실적을 크로스 탭으로 볼 수 있습니다.

 

열 필드의 [Quarter]을 행 필드로 드래그 앤 드롭 합니다.

같은 차원에 속하더라도 서로 다른 축에 자유롭게 위치 할 수 있습니다.

 

 

 

차원을 제거하는 방법은 해당 차원(열 필드 또는 행 필드)을 마우스로 드래그 앤 드롭하여 데이터 필드 밖으로 끌어다 놓습니다. (드래그 하여 밖으로 빼자)

 

여러 차원을 조합하여 년도별 월별, 분기별 데이터를 확인 할 수 있습니다,

 

실습에서 확인것과 같이 큐브에 접근해서 차원들을 이용하여 다양하게 데이터뷰를 만들어 분석 할 수 있습니다.

전문적인 OLAP 클라이언트 도구들은 단순히 다양한 데이터 뷰를 만드는 것 외에도 강력한 분석 기능 및 데이터 표현 기능을 내장하고 있어서 BIDS나 SSMS에서 기본적인 수준에서 큐브의 데이터를 파악하는 것 이상으로 분석 효과를 향상 시킬 수 있습니다.

'SQL Server > SSAS 강좌' 카테고리의 다른 글

06 - SSAS 차원 - (3) 롤-플레잉 차원  (0) 2015.07.15
05 - SSAS 차원 - (2) 시간 차원  (0) 2015.07.15
04 - SSAS 차원 - (1) 표준 차원  (0) 2015.07.15
03 - SSAS 큐브 조회  (0) 2015.07.15
02 - SSAS 큐브 만들기  (0) 2015.07.15
01- SSAS 환경 구축  (0) 2015.07.15

+ Recent posts