는 계속 그것을
간단한 방법은 단 4 일 개 유형으로 만 여섯 개 가지 차이가있을 것입니다, 이러한 조치를 이행 할 수 , 세 가지 다른 집계를 적용하면 18 가지 방법으로 끝나게됩니다. 이는 합리적 일 것입니다. 측정 값의 "폴더 표시"속성을 사용하고 클라이언트 도구에서이 값을 사용하는 경우 사용자가 40 또는 50 개의 측정 값을 사용하여 쉽게 찾을 수 있다고 생각합니다. 기술적으로 구현할 수있는 경우에도 비즈니스 관점에서 이해할 수없는 몇 가지 조합이 있습니다.
- : 세 가지 속성을 가진 유틸리티 차원을 만듭니다
유틸리티
또 다른 방법은 어쨌든 다차원 큐브를 사용하는 등,보기의 차원 점에서이 보는 것 속성 "From date"에는 "Created", "Started", "Closed"및 "Last Edit"의 네 멤버가 있습니다.
- "날짜가"인 경우 각 날짜 유형마다 멤버가 하나씩 있지만
- 이고 "Ag gregation "에는"최소 ","최대 "및"평균 "의 세 가지 구성원이 있습니다.
이 치수는 어떤 측정 값 그룹과도 완전히 관련이 없습니다. 그것이 기반으로하는 테이블은 이러한 속성의 모든 (유효한) 조합을 포함합니다.
계산 된 측정 값인 "시간 차이"라는 단일 측정 값만 사용합니다.
최종 사용자가 쉽게 이해할 수있는 방법으로 특성과 구성원 및 측정 값의 이름을 바꾸는 것이 좋습니다.
그런 다음 계산 스크립트에서 세 가지 특성의 CurrentMember
을 확인하는 방식으로 "시간 차이"측정을 구현 한 다음 적절한 계산을 수행합니다. 이 유사 수 : 큐브의 크기에 따라 약간의 성능 조정이 필요할 수 있습니다
CASE
WHEN IsError([Utility].[From Date].CurrentMember) // multi selection
OR [Utility].[From Date].CurrentMember IS [Utility].[From Date].[All]
OR IsError([Utility].[To Date].CurrentMember)
OR [Utility].[To Date].CurrentMember IS [Utility].[To Date].[All]
OR IsError([Utility].[Aggregation].CurrentMember)
OR [Utility].[Aggregation].CurrentMember IS [Utility].[Aggregation].[All] THEN
NULL // these special cases are invalid
ELSE
CASE
WHEN [Utility].[Aggregation].CurrentMember IS [Utility].[Aggregation].[Minimum] THEN
Min(Leaves(),
CASE
WHEN [Utility].[To Date].CurrentMember IS [Utility].[To Date].[Started] THEN
Measures.StartDate
WHEN [Utility].[To Date].CurrentMember IS [Utility].[To Date].[Closed]
Measures.ClosedDate
...
END
-
CASE
WHEN [Utility].[From Date].CurrentMember IS [Utility].[From Date].[Started] THEN
Measures.StartDate
WHEN [Utility].[From Date].CurrentMember IS [Utility].[From Date].[Closed]
Measures.ClosedDate
...
END
)
WHEN [Utility].[Aggregation].CurrentMember IS [Utility].[Aggregation].[Minimum] THEN
Max(Leaves(),
... // repeat code from above
)
WHEN [Utility].[Aggregation].CurrentMember IS [Utility].[Aggregation].[Average] THEN
Avg(Leaves(),
... // repeat code from above
)
END
END
이 코드는, 그러나 당신은 생각을해야합니다 단지 속성의 모든 경우를 확인하고 적절한 계산을 구현한다.
두 번째 방법의 단점은 사용자가 교육이 필요하다는 것입니다. "시간 차이"측정이 작동하려면 모든 쿼리에 세 가지 특성을 추가하고 적절하게 선택을 적용해야합니다. 클라이언트 도구에 따라 개별 선택 항목이있는 세 가지 속성을 가질 수 없습니다. e. 지.
Attrib | Col 1 | Col 2
From | Created | Started
To | Started | Closed
Agg | Min | Max
과 같이 두 개의 열이 있지만 선택한 구성원의 교차 생성 만 가능합니다.
그리고 다중 선택 또는 전혀 선택이없는 경우 (즉, CurrentMember
은 All
회원) 사용자에게 유틸리티 속성에 대해주의를 기울여야합니다. 모든 단점 후
, 여기에 유틸리티 차원의 접근 방식은이 경우, 다른 대상에 적용 할 수있는 방법에 대한 설명입니다 날짜에 년 성장과 전년 대비 올해 같은 시간 계산 : http://sqlblog.com/blogs/marco_russo/archive/2007/09/02/datetool-dimension-an-alternative-time-intelligence-implementation.aspx
혼합 접근
마지막으로 혼합 된 방법을 사용할 수 있습니다. 지. 모든 날짜 유형 조합에 대한 계수를 작성하지만 집계에 대한 유틸리티 속성.
SSAS 표 또는 다차원? –
정확하게 계산하면 네 개의 요소 집합 중 여섯 개의 서로 다른 두 요소 집합이 있습니다. 이자형. 여섯 가지 다른 점이 있습니다. 이는 X와 Y 필드의 'bazillion'차이보다 약간 작습니다.;-) 그리고 세 가지 다른 집계 ('최대', '최소', '평균')를 사용하여 이들을 세 배로 늘리더라도 18 개의 측정만으로 끝납니다. 이는 제 의견으로는 큐브에 대한 합리적인 수의 측정입니다 . – FrankPl
@mike Multidimensional – Justin