1 / 61

MDX 의 이해와 활용

MDX 의 이해와 활용. 권오주 올랩포럼 시삽 Microsoft Global MVP www.olapforum.com. 소개 내용. MDX 의 의의 MDX 기본 이해 MDX 기본 활용 MDX 고급 활용. MDX 의 의의. MDX 의 이해. MDX = M ulti D imensional e X pressions OLAP 데이터베이스를 모델링하고 쿼리하는 구문 다차원 오브젝트 이해 큐브 , 차원 , 수준 , 구성원 , 셀 , … 다차원 공간 탐색 및 이동

nasnan
Download Presentation

MDX 의 이해와 활용

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MDX의 이해와 활용 권오주 올랩포럼 시삽 Microsoft Global MVP www.olapforum.com

  2. 소개 내용 • MDX의 의의 • MDX 기본 이해 • MDX 기본 활용 • MDX 고급 활용

  3. MDX의 의의

  4. MDX의 이해 • MDX = Multi Dimensional eXpressions • OLAP 데이터베이스를 모델링하고 쿼리하는 구문 • 다차원 오브젝트 이해 • 큐브, 차원, 수준, 구성원, 셀, … • 다차원 공간 탐색 및 이동 • OLAP Services 고급 구현 필수 • 복잡한 비즈니스 로직 구현 • 다양한 부가적 기능 • OLE DB for OLAP 스펙의 부분 • Provider (Analysis Services, TM1, SAS, WhiteLight, SAP, …)

  5. OLE DB for OLAP 지원 • 지원 선언 업체 리스트 (2002.06 기준) • Acuity Group, Andyne Computing Limited, Application Consulting Group, Inc. (ACG), Applix TM1 Software, Arbor Software, arcplan, Inc., AVOCA Systems Limited, BAAN, Brio Technology, Business Objects, Cognos, Comshare, Gentia Software, Hyperion Software, Information Advantage Inc., International Software Group, InterNetivity, Intersolv, Inc., IQ Software, Knosys, Microsoft, MIS AG, NCR,Panorama Software Systems Ltd., Pilot Software, Sagent Technology, Inc., SAS Institute, Seagate Software, Silvon Software, Simba Technologies, Speedware Corporation, WhiteLight Systems, X-Tension, ...

  6. MDX 쿼리가 가능한 데이터베이스 • Analysis Services, TM1, SAS, SAP, Whitelight, Silvon, Harmony, NCR, Seagate, Essbase, ... • 제한된 범위 내에서 업체별로 MDX를 확장해 기능 강화 (Superset, Subset)

  7. Analysis Services MDX 활용 • 동작 • 계산된 구성원 • 계산된 셀 • 명명된 집합 • 사용자 롤업 수식 • 사용자 지정 구성원 수식 • 차원 보안의 사용자 지정 규칙 • 셀 보안의 사용자 지정 규칙 • 동적인 속성 설정

  8. MDX의 활용 유형 • MDX Statement • 브라우징용 쿼리 언어 (SQL 쿼리와 유사) • 완전한 구문 (SELECT…FROM) • 클라이언트 Apps용 도구 • 완전한 보고서 형태 값들 반환 (Data Set) • MDX Expression • 다차원 수식(스프레드시트 수식과 유사) • 비즈니스 모델링 • 계산된 구성원, 기본 구성원, 차원/큐브 속성 생성 및 설정 등에 활용 • 하나의 단일 값 반환

  9. MDX 기본 이해

  10. MDX 쿼리 SELECT <Axis_Spec> ON COLUMNS,<Axis_Spec> ON ROWS, …FROM CubeWHERE <Slicer_Spec> • 128개의 축 (하나의 축에 차원 중첩 가능) • 쿼리 실행 • 축 생성 • 셀의 데이터 값 획득 • 예) 97, 98년 CA의 판매수량, 판매액 SELECT { [Measures].[Unit Sales], [Measures].[Store Sales] } ON COLUMNS, { [Time].[1997], [Time].[1998] } ON ROWS FROM Sales WHERE ( [Store].[USA].[CA] )

  11. Groceries Appliances Clothing 10 95 20 96 97 98 99 Sales Cost Units MDX 쿼리 실행

  12. MDX 구조 • 구성원(Member) • [홍두깨], [1991].[Q1].[1월] • 튜플(Tuple) • ([홍두깨], [서울]), ([컴퓨터], [1991]) • 집합(Set) • {[홍두깨], [홍길동]} • {([컴퓨터],[서울]), ([프린터],[경기])} • [1991].Children • TopCount([영업부].Members, 10, [판매액])

  13. 다차원 공간 • 구성원 (Member) • 수준 (Level) • 차원 (Dimension) • 큐브 (Cube)/파티션 (Partition) • 셀 • 셀 주소 (Cell Address) • 상대 주소 (Relative Address) • 현재 셀 (Current Cell)

  14. 셀 주소 (Products.Food , Measures.Units ,Time. 98) (Products.Food , Measures.Sales ,Time. 97) (Products.[Non-Cons] , Measures.Cost ,Time.95) Non-Cons Drink Food 95 96 97 98 99 Sales Cost Units

  15. 상대 주소 (Products.Food, Measures.Units, Time.98.PrevMember) (Products.Food, Measures.Units, Time.98.NextMember) Food ? 98 ? Units

  16. 상대 주소 (Products.Food, Measures.Units, Time.98.PrevMember) (Products.Food, Measures.Units, Time.98.NextMember) (Products.Food, Measures.Units.PrevMember, Time.98.Lag(3)) 또는 (Products.Food, Measures.Units.PrevMember, Time.98.Lead(-3)) Food ? ? 98 ? Units

  17. 현재 셀 Non-Cons. Drink Food 95 96 97 Current Cell : ( Product.CurrentMmeber, Time.CurrentMember, Measures.CurrentMember ) 98 99 Units Sales Cost Growth

  18. Time.95 13 15 5 13 17 6 11 22 Empty 7 9 29 9 10 30 8 판매액의 전기 대비 성장률? WITH MEMBER Measures.Growth AS ‘(Time.CurrentMember,Measures.Sales) - (Time.CurrentMember.PrevMember,Measures.Sales)’ SELECT Time.Year.Members ON ROWS, AddCalculatedMembers(Measures.Members) ON COLUMNS FROM Sales Time.CurrentMember Non-Cons Drink Food 15 95 96 Time.CurrentMember.PrevMember 97 98 99 Sales Cost Units Growth

  19. Time.96 13 15 5 13 17 6 11 22 Time.95 7 9 29 9 10 30 8 WITH MEMBER Measures.Growth AS ‘(Time.CurrentMember,Measures.Sales) - (Time.CurrentMember.PrevMember,Measures.Sales)’ SELECT Time.Year.Members ON ROWS, AddCalculatedMembers(Measures.Members) ON COLUMNS FROM Sales Time.CurrentMember Non-Cons Drink Food 15 95 2 96 Time.CurrentMember.PrevMember 97 98 99 Sales Cost Units Growth

  20. Time.97 13 15 5 13 17 6 11 22 Time.96 7 9 29 9 10 30 8 WITH MEMBER Measures.Growth AS ‘(Time.CurrentMember,Measures.Sales) - (Time.CurrentMember.PrevMember,Measures.Sales)’ SELECT Time.Year.Members ON ROWS, AddCalculatedMembers(Measures.Members) ON COLUMNS FROM Sales Time.CurrentMember Non-Cons Drink Food 15 95 2 96 Time.CurrentMember.PrevMember 5 97 98 99 Sales Cost Units Growth

  21. Time.98 13 15 5 13 17 6 11 22 Time.97 7 9 29 9 10 30 8 WITH MEMBER Measures.Growth AS ‘(Time.CurrentMember,Measures.Sales) - (Time.CurrentMember.PrevMember,Measures.Sales)’ SELECT Time.Year.Members ON ROWS, AddCalculatedMembers(Measures.Members) ON COLUMNS FROM Sales Time.CurrentMember Non-Cons Drink Food 15 95 2 96 Time.CurrentMember.PrevMember 5 97 7 98 99 Sales Cost Units Growth

  22. Time.99 13 15 5 13 17 6 11 22 Time.98 7 9 29 9 10 30 8 WITH MEMBER Measures.Growth AS ‘(Time.CurrentMember,Measures.Sales) - (Time.CurrentMember.PrevMember,Measures.Sales)’ SELECT Time.Year.Members ON ROWS, AddCalculatedMembers(Measures.Members) ON COLUMNS FROM Sales Time.CurrentMember Non-Cons Drink Food 15 95 2 96 Time.CurrentMember.PrevMember 5 97 7 98 1 99 Sales Cost Units Growth

  23. MDX 기본활용

  24. 기간 분석 요구 사항… • 판매액의 전기 대비 성장률? • 판매액의 전년 대비 성장률? • 판매액의 기간 누적? • 재고량 • 기간별 재고량? • 기간별 평균 재고량? • 최근의 평균 재고량? • 기간 중 최대/최소 재고량

  25. 판매액의 전기 대비 성장률? 10 10 80 15 -20 45 -15 -45 5 10 100 10 20 5

  26. 80 15 -20 45 Time.CurrentMember, Measures.CurrentMember Time.CurrentMember,Measures.Sales Time.CurrentMember.PrevMember, Measures.Sales

  27. 판매액의 전년 대비 성장률? 50 20 -10 10

  28. 20 (Measures.Sales,Time.CurrentMember) - (Measures.Sales,ParallelPeriod(Year,1,Time.CurrentMember))

  29. 판매액의 기간 누적?

  30. Time.Jan,Measures.Sales + Time.Feb,Measures.Sales + Time.Mar,Measures.Sales (Time.CurrentMember,Measures.Sales) + (Measures.YTD,Time.CurrentMember.Prevmember) Sum(YTD(Time.CurrentMember),Sales)

  31. 재고량 분석 요구사항... • 일정 시간 시점의 재고량 (Snapshot) • 비즈니스 분석요구사항 • 각 기간의 시작과 종결시점의 재고량 • 각 기간의 평균수량과 재고가치 • 한 기간에서 최저와 최고일 때의 재고량 • 전체 재고가치에 대한 각 아이템의 상대적 기여도 • 문제점 : 재고량 측정값은 시간에 대해 누적되지 않는 값

  32. 재고량 ……. 문제점 : 재고량은 누적되는 값이 아니다 .. … X X X X X

  33. 마감 재고 해당기간의 마지막 월의 수량 다음 중 마지막 월의 수량 (Descendants([Time].CurrentMember, [Month]) (Measures.Quantity, Tail(Descendants([Time].CurrentMember, [Month]),1).Item(0)) (Measures.Quantity, ClosingPeriod([Month]))

  34. 50 90 70 105 105 X X X X (Inventory, ClosingPeriod(Month)) X

  35. 기간에 대한 평균 기간의 모든 월별 수량의 합계를 월수로 나눈다 Sum (기간의 월들,Quantity) / Count(기간의 월들 ) Sum (Descendants([Time].CurrentMember,[Month]), Quantity) / Count(Descendants([Time].CurrentMember,[Month])) Avg( Descendants([Time].CurrentMember,[Month]), Quantity)

  36. 40.0 66.7 61.7 95.0 65.8 Avg( Descendants([Time].CurrentMember,[Month]), Inventory)

  37. 최근의 평균 재고량 IIF(Time.CurrentMember.Level.Name = “Month”, AVG(LastPeriods(5, Time.CurrentMember), Inventory), NULL) Measures.[Avg Inv Of Last5 Mon]

  38. Measures.[Maximum Inventory] 기간 중 최대 재고량 MAX( Descendants(Time.CurrentMember,Time.Month), Measures.[Value] )

  39. 기간 중 최소 재고량 Measures.[Minimum Inventory MIN( Descendants(Time.CurrentMember,Time.Month), Measures.[Value] )

  40. 가장 최근의 값 200 • 재귀적 참조 이용 WITH MEMBER Measures.[Last Sales] AS 'IIF(IsEmpty((Measures.[Store Sales], Time.CurrentMember)), (Measures. [Last Sales], Time.PrevMember), (Measures.[Store Sales], Time.CurrentMember) )' SELECT {[Store Sales], [Last Sales]} ON COLUMNS, {Time.Members} ON ROWS FROM Sales 200

  41. 기여도 분석요구 사항... • 순위 • 소속별 순위 • 전체 순위 • 기여도 • 점유율 • 배부

  42. 제품의 소속 그룹내 판매액 순위 제품의 그룹별로 각 제품의 판매액 순위 Rank(현재제품, 판매액으로 정렬된 현재제품이 속한 그룹의 제품들) Rank(Product.CurrentMember , Order(해당 그룹의 제품들, [Store Sales])) Rank(Product.CurrentMember , Order(Product.CurrentMember.Siblins, [Store Sales], DESC) )

  43. 제품에 속한 레벨내 판매액 순위 제품의 레벨내에서 각 제품의 판매액 순위 Rank(현재제품, 판매액으로 정렬된 현재제품이 속한 레벨의 제품들) Rank(Product.CurrentMember , Order(해당 레벨의 제품들, [Store Sales])) Rank(Product.CurrentMember , Order(Product.CurrentMember.Level.Members, [Store Sales], BDESC) )

  44. 점유율 현재 제품 또는 그룹이 전체에서 차지하는 판매 기여도 현재 제품 또는 그룹의 판매 금액 / 전체 제품의 판매금액 [Store Sales] / (전체 제품, [Store Sales]) [Store Sales] / (Product.[All Products], [Store Sales])

  45. 판매실적 기준 예산 배분

  46. ([All Products], [Allot Budget]) * ([Store Sales]/ ([All Products], [Store Sales])) 제품 전체 예산 * 현재 제품 또는 그룹이 전체에서 차지하는 판매 기여도 ([All Products], [Allot Budget]) * 현재 제품 또는 그룹이 전체에서 차지하는 판매 기여도

  47. MDX 고급활용

  48. Current Cell Context • Default Member • All Member • 최상위 레벨의 첫번째 Member • 별도 지정된 Member (MDX 활용 가능) • CurrentMember • FROM • WHERE • Closest Context • 축과의 교차점 • 서브 집합

  49. 반복 처리 • 반복처리 관련 주요 함수 • Generate • CurrentMember • Current • Item • 상점별 판매금액 기준 Top 5 제품들 • 판매이익 Top5 고객 중에 판매금액이 Top5인 고객 • SCD Type II에서의 사원별 판매금액 실적

  50. Generate() • Set • Generate(Set1, Set2[, ALL]) Set1을 구성하는 각 튜플에 대하여 Set2 복제 결합 • 문자열 • Generate(Set, String Expression[, Delimiter]) Set을 구성하는 각 튜플에 대하여 문자열 생성 결합

More Related