這是我翻譯Chris Webb的文章,原文請查看http://spaces.msn.com/cwebbbi/blog/cns!7B84B0F2C239489A!710.entry?txtName=anchky&blogcs=end。主要介紹如何處理同時聚合多個計算成員!翻譯的不一定正確,如有疑問的請查看原文!???
?
??? 多時間維度(根據(jù)AS 2005,確切的說是關(guān)于時間的屬性層次)是非常有效的。我最初是從各種信息渠道介紹的
George Spofford
的《mdx解決方案》知道多時間維度的。并且
George Spofford
和他的書提供的技術(shù)已經(jīng)成為普遍應(yīng)用于多維數(shù)據(jù)集分析服務(wù)的設(shè)計技巧之一。而且更進一步地,多時間維度技巧已經(jīng)成為《增加商業(yè)智能》向?qū)б粫?span lang="EN-GB">“設(shè)計時間智能”平臺的組成部分。
????
那么,這里頭又沒有什么新的東西值得介紹呢?很多時候,多時間維度就是比單時間維度高效。拿如下的mdx腳本舉例子,這個mdx是根據(jù)向?qū)?chuàng)建的,創(chuàng)建了單一時間維度
[Year-Month Period Calculations]
山的兩個計算成員
(Year-To-Date and Year-Over-Year Growth)
/*
? Begin Time Intelligence script for the [Period].[Year-Month] hierarchy.
*/
?
Create
Member
?
CurrentCube
.[Period].[Year-Month Period Calculations].[Year to Date]
?
As
"NA"
;
?
Create
Member
?
CurrentCube
.[Period].[Year-Month Period Calculations].[Year Over Year Growth]
?
As
"NA"
;? ?
Scope
(
?????? {
???????? [Measures].[Sales]
?????? }
) ;
?
// Year to Date
? (
??? [Period].[Year-Month Period Calculations].[Year to Date],
??? [Period].[Year].[Year].
Members
,
???? [Period].[Month].
Members
? ) =
?
Aggregate
(
???????????? { [Period].[Year-Month Period Calculations].
DefaultMember
} *
????????????
PeriodsToDate
(
??????????????????????????? [Period].[Year-Month].[Year],
??????????????????????????? [Period].[Year-Month].
CurrentMember
???????????? )
? ) ;
// Year Over Year Growth?
? (
???? [Period].[Year-Month Period Calculations].[Year Over Year Growth],
??? [Period].[Year].[Year].
Members
( 1 ) :
Null
,
???? [Period].[Month].
Members
? ) =?????
? ( [Period].[Year-Month Period Calculations].
DefaultMember
) -
? ( [Period].[Year-Month Period Calculations].
DefaultMember
,
???
ParallelPeriod
(
??????????????????? [Period].[Year-Month].[Year],
??????????????????? 1,
??????????????????? [Period].[Year-Month].
CurrentMember
??? )
? ) ;
?? (
??? [Period].[Year-Month Period Calculations].[Year Over Year Growth],
??? [Period].[Year].[Year].
Members
( 0 ),
??? [Period].[Month].
Members
? ) =
Null
;
?
End
Scope
;
?
/*
? End Time Intelligence script for the [Period].[Year-Month] hierarchy.*/
???
這樣做是高效的,但是當你的用戶要求能夠在
Year-To-Date
的數(shù)據(jù)上查看
Year-Over-Year
的增長趨勢的時候,我們該怎么辦?當然,你可以通過創(chuàng)建第三個計算成員來實現(xiàn)這個功能。然而我們很容易想到:當需求的計算聚合越多,我們創(chuàng)建一維持功能的計算成員數(shù)量就會越多。
???
而這些剛好是多用途的時間屬性層次可以解決的,因為多時間維度可以幫助你控制計算成員的爆發(fā)式增長———你可以讓多個計算成員集合在一起。首先,必須像創(chuàng)建初始時間屬性層次一樣通過拖拽列在時間維度上創(chuàng)建一個新的屬性層次。需要注意的是,要確保把是否聚集(
IsAggregatable
)屬性設(shè)置為
false
以免聚合所有成員。接下來要確定的是,哪個計算對應(yīng)與哪個層次,當然該計算必須指向可用的計算聚合。如下的的mdx修改了上述的mdx,修改之后,兩個計算成員分別指向了兩個不同的屬性層次,這兩個層次分別是
[Period].[Year-Month Period Calculations]
和
[Period].[Year-Month Period Calculations2]
:
/*
? Begin Time Intelligence script for the [Period].[Year-Month] hierarchy.
*/
?
Create
Member
?
CurrentCube
.[Period].[Year-Month Period Calculations].[Year to Date]
?
As
"NA"
;
?
Create
Member
?
CurrentCube
.[Period].[Year-Month Period Calculations 2].[Year Over Year Growth]
?
As
"NA"
;
?
Scope
(
?????? {
???????? [Measures].[Sales]
?????? }
) ;
// Year to Date
? (
??? [Period].[Year-Month Period Calculations].[Year to Date],
??? [Period].[Year].[Year].
Members
,
???? [Period].[Month].
Members
? ) =
?
Aggregate
(
???????????? { [Period].[Year-Month Period Calculations].
DefaultMember
} *
????????????
PeriodsToDate
(
??????????????????????????? [Period].[Year-Month].[Year],
?????? ?????????????????????[Period].[Year-Month].
CurrentMember
???????????? )
? ) ;
// Year Over Year Growth?
? (
???? [Period].[Year-Month Period Calculations 2].[Year Over Year Growth],
??? [Period].[Year].[Year].
Members
( 1 ) :
Null
,
???? [Period].[Month].
Members
? ) =?????
?
? ( [Period].[Year-Month Period Calculations 2].
DefaultMember
) -
? ( [Period].[Year-Month Period Calculations 2].
DefaultMember
,
???
ParallelPeriod
(
??????????????????? [Period].[Year-Month].[Year],
??????????????????? 1,
???????????????? ???[Period].[Year-Month].
CurrentMember
??? )
? ) ;
?? (
??? [Period].[Year-Month Period Calculations 2].[Year Over Year Growth],
??? [Period].[Year].[Year].
Members
( 0 ),
??? [Period].[Month].
Members
? ) =
Null
;
?
End
Scope
;
/*
? End Time Intelligence script for the [Period].[Year-Month] hierarchy.
*/
????
這下用戶就可以通過交叉他們要求的兩個計算成員來實現(xiàn)通過
Year-To-Date
數(shù)據(jù)查看
Year-Over-Year Growth
,就跟單獨使用單個計算成員一樣。
凡是有該標志的文章,都是該blog博主Caoer(草兒)原創(chuàng),凡是索引、收藏
、轉(zhuǎn)載請注明來處和原文作者。非常感謝。