차원 – (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

큐브 만들기

 

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

 

이번 시간에는 큐브를 만들어 보도록 하겠습니다.

 

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

 

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

 

[데이터 원본 마법사]에서 [새로 만들기]를 선택 합니다.

 

[연결 관리자]에서 서버이름을 입력하고 데이터베이스에는 [AdventureWorksDW]를 선택 합니다.

 

[데이터 연결]이 완료 되었으면 [다음]을 클릭 합니다.

 

[가장 정보]단계에서는 [서비스 계정 사용]을 선택 합니다.

 

데이터 원본 이름을 지정하고 마침을 클릭 합니다.

 

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

 

앞에서 만든 원본 뷰를 선택하고 다음을 클릭 합니다.

 

[데이터 원본 뷰 마법사]에서 DimProductSubCategory를 선택하고 [>]를 클릭하여 [포함된 개체]에 포함 시킵니다.

 

[관련 테이블 추가] 버튼을 연속 4번 클릭하여 관련된 테이블을 포함 합니다. 그리고 DimCurrency, DimSalesTerritory, FactInternetSalesReason 을 선택하여 [<] 버튼을 클릭하여 포함된 개체에서 제외 합니다.

 

마법사 완료 단계에서 이름을 지정하고 마침을 클릭 합니다.

 

솔루션 탐색기에 [Adventure Works DW.dsv]가 나타납니다.

 

[다이어 그램]창에서 [Dim Time] 테이블을 오른쪽 마우스로 클릭한 후 [새 명명된 계산]을 클릭 합니다.

 

명명된 계산 만들기 창에서 [열 이름]에 월을 입력하고 식에 다음과 같이 입력 합니다.

CONVERT(CHAR(4), CalendarYear) + ' ' + EnglishMonthName

 

 

[Dim Time]에서 마우스 오른쪽을 클릭하여 [데이터 탐색]을 선택 합니다.

 

앞에서 추가한 명명된 계산(월)이 정상적으로 조회되는 것을 확인 할 수 있습니다.

 

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

 

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

 

측정 그룹 선택에서 데이터 원본 뷰는 [Adventure Works DW]를 선택하고 측정값 그룹 테이블을 선택 합니다. 그리고 [제안] 버튼을 클릭합니다.

 

측정값 선택에서

Order Quantity

Sales Amount

Order Quantity – Fact Internet Sales

Sales Amount – Fact Internet Sales 를 선택 합니다.

 

새 차원 확인 단계에서 검색된 차원들의 특성과 계층을 살펴 봅니다.

 

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

 

큐브 디자이너 그림창에서 노란색으로 보이는 테이블은 Fact테이블을 나타내고 파란 테이블은 차원 테이블을 나타냅니다. 측정값 창에는 각 팩트 테이블에 대응하는 측정값 그룹이 나타납니다. Analysis Services는 하나의 큐브안에 여러 개의 서로 다른 팩트 테이블을 포함할 수 있습니다.(멀티 팩트 테이블)

 

측정값 창에 보이는 측정값 그룹과 측정값들의 이름을 다음과 같이 변경 합니다.

Fact Reseller Sales -> Reseller Sales

Order Quantity -> Reseller Order Quantity

Sales Amount -> Reseller Sales Amount

Fact Internet Sales -> Internet Sales

Order Quantity – Fact Internet Sales -> Internet Order Quantity

Sales Amount – Fact Internet Sales -> Internet Sales Amount

 

그리고 각 측정값을 선택하고 [FormatString] 값을 [#,#]으로 설정 합니다.

 

 

솔루션 탐색기에서 [Dim Time.dim]을 더블 클릭 합니다.

큐브 마법사에서 확인 하였던 특성들과 계층이 나타납니다. 만약 계층이 나타나지 않는다면 [데이터 원본 뷰]에서 [특성]으로 마우스 드래그 앤 드롭으로 해당 항목을 끌어 놓고 다시 [특성]에서 [계층]으로 끌어다 놓습니다.

 

이렇게 하여 큐브가 생성 되었습니다.

 

다음 시간에는 큐브를 조회하는 방법에 대해서 알아 보도록 하겠습니다.

'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