SQL Server Analysis Services Tip 잘레시아 Copyright c 2010 Zalesia Co., Ltd.
Agenda I II SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 2
Copyright c 2010 Zalesia Co., Ltd. 3
STEP1: Sales 큐브를위해데이터를미리준비한다. 3 개의차원 (DimDate, DimProduct, and DimCustomer) 과 1 개의팩트를사용할것이다. STEP2: BIDS 를이용하여새로운 Analysis Services Project 를생성한다. STEP3: 데이터원본을생성하고 3 개의차원테이블을이용하여데이터원본뷰를생성한다.
STEP4: 필요한차원을추가하여 Sales 큐브를생성한다. 차원에필요한모든속성을설정하고계층구조가요구되어진다면그것도설정한다.
STEP5: 파티션탭을더블클릭한다. 밑에보여지는그림처럼 default 파티션을볼수있을것이다. default 파티션을삭제하고새파티션.. 을클릭하여파티션을생성한다.
파티션마법사에서, 원본정보지정화면의사용가능한테이블을 FactSales 테이블을선택하고다음버튼을클릭한다. 행을제한하는쿼리지정을선택하고 WHERE 조건을조정하여파티션의행수를제한한다.
다음버튼을두번누르고파티션이름 Sales_20100101-20100131 을넣고마법사를종료한다.
큐브처리를한다. 성공적으로처리되어진큐브를 SSAS 의새로운데이터베이스로볼수있다. 그리고이파티션의데이터를볼수있다.
STEP6: 수작업으로하나의파티션을만들었다. 이제데이터처리를위한과정과동적으로파티션생성을적용하기위한단계이다. 첫번째로, 파티션 Sales_20100101-20100131 선택후오른쪽버튼을클릭하여파티션스크립트생성 -> CREATE -> 파일을선택한다. CreatePartitionSales_20100101-20100131.xmla 로명명후저장한다. 이것은파티션생성을위한 XMLA 스크립트가될것이다. 이와유사한형태로파티션 Sales_20100101-20100131 선택후오른쪽버튼을클릭하여처리를선택한다. 스크립트 -> 파일동작스크립트를선택하여 CreatePartitionSales_20100101-20100131.xmla 로명명후저장한다. STEP7: SSAS 개발을끝냈다. 이제 SSIS 패키지에서동적인큐브파티션생성과파티션처리를구현해야한다. 같은솔루션에 Integration Services Project 프로젝트를추가한다. STEP8: 연결관리자에두개의연결을추가한다 - 데이터베이스를위한 OLE DB 연결과 SSAS 데이터베이스를위한 Analysis Services 연결.
STEP9: 패키지에다음의변수를추가한다. Directory - 패키지저장을위한경로 (PATH) FromDateKey - 현재파티션의시작일을저장 ( 예 - 20101201) ToDateKey - 현재파티션의종료일을저장 ( 예 - 20101231) PartitionName - 현재파티션의이름 ( 예 - SalesPartition_20101201-20101231) IsPartitionExists - 파티션존재유무확인 CreatePartitionXMLA - 현재파티션의생성을위한 XMLA 스크립트저장 ProcessPartitionXMLA - 현재파티션의처리를위한 XMLA 스크립트저장
STEP10: 밑에보여지는그림과같이 SSIS 패키지를개발해야한다.
첫번째 SQL 실행태스크는현재파티션을위한 FromDateKey, ToDateKey, 그리고 PartitionName 값을초기화하는데사용되어진다. 다음은이태스크에서사용하는쿼리이다.
두번째패키지는스크립트태스크이다. CreatePartitionSales_20100101-20100131.xmla 와 ProcessPartitionSales_20100101-20100131.xmla 파일의내용을읽어 CreatePartitionXMLA 과 ProcessPartitionXMLA 패키지변수에저장해야한다. User::Directory 변수는 ReadOnlyVariable 로설정 User::CreatePartitionXMLA,User::ProcessPartitionXMLA 변수는 ReadWriteVariables 설정 스크립트태스크가사용되어지는두가지이유 1. 현재파티션의존재유무를확인하기위해 2. 현재파티션을위한 XMLA 의내용을갱신하기위해
동적인파티션생성을위한가장핵심적인 XMLA 스크립트 현재파티션을위해파티션 ID, 파티션이름그리고행제한지정쿼리를바꿔주어야한다. 스크립트태스크에서, User::FromDateKey,User::PartitionName,User::ToDateKey 변수는 ReadOnlyVariables 로설정 User::CreatePartitionXMLA,User::ProcessPartitionXMLA,User::IsPartitionExists 변수는 ReadWriteVariables 로설정.
시퀀스컨테이너안에두번째태스크는 Analysis Services Execute DDL 실행태스크이다. 이태스크는새로운파티션생성을위해사용되어진다. Analysis Services Execute DDL 실행태스크편집기, localhost.dynamic_cube_partition 으로연결을설정하고 SourceType 은변수, Source 는 User::CreatePartitionXMLA 로설정한다.
선행제약조건설정을잊지말아야한다. 이태스크는파티션이존재하지않을때실행된다. Open P 선행제약조건편집기, 평가작업은식및제약조건, 값은성공그리고식은 @IsPartitionExists == 0 으로설정한다.
시퀀스컨테이너안에세번째태스크 - PartitionLog 테이블에새롭게생성되어진파티션정보를저장하기위해사용되어진다. SQL 실행태스크, ResultSet 은없음, ConnectionType 은 OLE DB, Connection 은 TesLocalHost.CubePartitionData, SQLSourceType 은직접입력그리고 SQLStatement 는다음과같이설정한다 : 매개변수매핑을클릭한후다음과같이파라미터를매핑한다 :
STEP11: 이제현재파티션의처리가필요하다. 이것은이전의시퀀스컨테이너 ( 파티션이존재하지않는다면, 파티션생성을하는 ) 에의존적이다. 패키지를실행할때마다현재파티션처리가필요하다. 거의대부분의경우에, 매월 1 일에새로운파티션은생성되어질것이다. 하지만증분 / 변경되는데이터를포함하고있으므로파티션처리는패키지실행시마다되어야한다. 이시퀀스컨테이너는 3 개의태스크를포함하고있다.
첫번째태스크는차원의데이터를처리하기위한 Analysis Services 처리태스크이다. 연결관리자는 localhost.dynamic_cube_partition 그리고개체목록에모든차원을설정한다. 처리옵션은업데이트처리로설정한다.
두번째태스크도현재파티션처리를위한 Analysis Services 처리태스크이다. 연결관리자는 localhost.dynamic_cube_partition 그리고개체목록에 Sales_20100101-20100131 파티션을설정한다. 처리옵션은전체처리로설정한다. 식메뉴를클릭하고 ProcessingCommands 를 @[User::ProcessPartitionXMLA] 로설정.
마지막으로 SQL 실행태스크를이용하여최근처리일자와처리된빈도 ( 파티션이처리되어진빈도수 ) 를로그테이블에저장한다. 결과집함은없음, ConnectionType 은 OLE DB, Connection 은 TesLocalHost.CubePartitionData, SQLSourceType 직접입력그리고 SQLStatement as 는다음과같다 : 매개변수매핑을클릭하고, 파라미터를 User::PartitionName 로설정한다.
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 23
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 24
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 25
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 26
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 27
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 28
SSAS Non-Aggregatable 측정값처리 Copyright c 2010 Zalesia Co., Ltd. 29
감사합니다