작업 데이터베이스는 MS에서 Sample로 제공하는 AdvenctureWorks 데이터베이스를 사용합니다.
SQL Server 2005 클라이언트 유틸리티를 설치하면 Visual Studio 2005에서 BI 프로젝트를 생성할 수 있습니다. Analysis Service 프로젝트를 생성해서 다음과 같은 작업을 수행합니다.
1. 데이터 원본
공급자(Provider)는 .NET 공급자와 네이티브OLEDB 공급자를 모두 지원합니다. 우리는 기본 공급자인 네이티브 OLEDB의 Sql Native Clinet를 사용해서 AdventureWorks를 연결합니다.
2. 데이터 원본 뷰
데이터 원본 뷰 생성 마법사에서 Sales.SalesOrderHeader와 Sales.SalesOrderDetail 테이블을 추가하고 완료합니다.
완료되면 데이터 원본 뷰 디자이너가 출력되는데 디자이너 팝업 메뉴에서 “새 명명된 쿼리”를 선택합니다.
이름은 SalesOrderDate로 하고 다음 쿼리를 입력합니다.
SELECT SalesOrderID, YEAR(OrderDate) AS OrderYear, MONTH(OrderDate)
AS OrderMonth, DAY(OrderDate) AS OrderDay
FROM Sales.SalesOrderHeader
SalesOrderDate는 차원(Dimension) 역할을 할 뷰입니다.
이 쯤에서 차원(Dimesion)과 팩터(Factor)를 알아봅시다.
팩터는 실제 분석할 대상 데이터입니다. 연도별 매출액을 집계 낼 때 매출데이터가 팩터가 되고 년도가 차원이 됩니다.
저는 차원을 팩터를 분석하는 기준 데이터라고 이해하고 있습니다.
매출액을 연도별로 집계를 낼 때 기준이 되는 데이터는 연도가 되는 거죠.
이 연도가 차원이고 차원 중에서 자주 쓰이는 [시간 차원]에 해당합니다.
일반적으로 차원과 팩터는 관계 데이터베이스와 마찬가지로 관계가 설정되어야 합니다. 차원에 주키(Primary Key)가 있고 팩터에서 차원의 주키를 참조하는 외부키(Foreign Key)가 있어야 합니다.
다음과 같은 관계가 되는 거죠.
SalesOrderDate의 SalesOrderID 컬럼을 논리적 기본키로 설정한 후에 SalesOrderHeader의 SalesOrderID와 관계를 설정합니다. 기본키(대상) 테이블이 SalesOrderDate(차원) 테이블이 되고 외래키(원본) 테이블이 SalesOrderHeader(팩터)와 SalesOrderDetail(팩터) 테이블이 됩니다.
주의할 것은 팩터에 있는 외래키 값 모두가 차원의 주키에 포함되어야 한다는 겁니다. 즉 SalesOrderHeader(팩터)의 SalesOrderID=10 인 레코드가 있는데 SalesOrderDate(차원)의 SalesOrderID에는 10인 값이 없을 경우 큐브를 생성하고 처리할 때 다음과 같은 오류가 발생합니다.
OLAP 저장소 엔진 오류: 특성 키를 찾을 수 없습니다: 테이블: Sales_SalesOrderHeader, 열: SalesOrderID, 값: 43659.
OLAP 저장소 엔진 오류: 특성 키를 찾을 수 없어 레코드를 건너뛰었습니다. 데이터베이스: AdventureWorksOLAP, 큐브: Adventure Works, 측정값 그룹: Sales Order Header, 파티션: Sales Order Header, 레코드: 1의 차원: Sales Order Date 특성: SalesOrderID.
3. 큐브
이제 큐브를 만들어 보죠.
큐브 마법사를 실행합니다. 생성 방법 선택 다이얼로그에서 [데이터 원본을 사용하여 큐브 생성]을 선택하고 [자동 생성] 체크박스를 해제합니다.
물론 자동으로 생성해도 깔끔하게 생성됩니다만 수동으로 생성해봐야 더 빨리 이해할 수 있습니다.
팩트 및 차원 테이블 식별 다이얼로그에서 다음 그림과 같이 [Sales.SalesOrderHeader]를 팩트 테이블로 [SalesOrderDate]를 차원 테이블로 각각 선택합니다.
다음->다음을 선택한 후 최종 마침을 선택하면 큐브와 차원이 각각 생성됩니다.
생성된 큐브를 더블클릭하면 큐브 작업 윈도우가 나옵니다.
세세하게 살펴보지 않고 두 가지만 짚어보기로 하죠.
A) 처리
프로젝트가 변경되었을 경우 먼저 리빌드 후 서버에 배포를 합니다
서버는 SQL Server 2005 Analysis Service가 설치된 서버인데 로컬서버라 가정합니다.
배포하고 난 후 SSMS에서 Analysis Service에 연결하면 다음과 같이 Visual Studio에서 생성한 BI프로젝트가 배포된 것을 확인할 수 있습니다.
큐브 처리는 다음 아이콘을 클릭해서 진행할 수 있습니다.
처리를 시작하면 다음과 같은 오류를 만날 수도 있습니다.
이 오류는 데이터베이스 원본 생성시 선택한 ImpersonationMode(윈도우 자격 증명 가장)에 문제가 있을 경우 발생합니다. 이럴 경우 데이터 원본의 속성 다이얼로그를 연 후 다음과 같이 변경하시면 됩니다.
모든 오류를 수정하고 처리가 성공하면 다음 그림과 같은 다이얼로그를 볼 수 있습니다.
B. 브라우저
마지막으로 처리된 큐브 데이터를 확인해 보죠.
다음과 같이 [브라우저] 탭을 선택합니다.
왼쪽 Adventure Works 트리뷰에서 Measures 항목의 [Sales Order Header] 팩터를 확장한 후, [Sales Order Header 카운트] 항목을 다음과 같이 드래그&드랍합니다.
[Sales Order Date] 차원에서 [Order Year] 항목을 다음과 같이 행 필드 영역에 드래그 & 드랍합니다.
[Order Month]와 [Order Day] 항목도 차례로 행 필드 영역에 드래그 & 드랍하면 다음과 같이 처리된 결과 데이터를 탐색할 수 있게 됩니다.
이상으로 SQL Server 2005 Analysis Service에서 큐브를 만드는 방법을 살펴보았습니다.
앞으로 살펴볼 항목은 다중차원(Multi-Dimension)과 2개 이상의 데이터 원본을 사용해서 큐브를 만드는 방법입니다.
물론 스킵한 항목들을 꼼꼼하게 살펴볼 필요도 있습니다만 MSDN에 필요한 만큼 충분히 자세히 설명하고 있으므로 생략하도록 하겠습니다.



이올린에 북마크하기
Prev
Rss Feed