MDX技巧 如何處理 聚合多計算成員

2021-05-28 12:18:11 字數 4203 閱讀 7118

多時間維度(根據as 2005,確切的說是關於時間的屬性層次)是非常有效的。我最初是從各種資訊渠道介紹的

george spofford

的《mdx解決方案》知道多時間維度的。並且

george spofford

和他的書提供的技術已經成為普遍應用於多維資料集分析服務的設計技巧之一。而且更進一步地,多時間維度技巧已經成為《增加商業智慧型》嚮導一書的「設計時間智慧型」平台的組成部分。

那麼,這裡頭又沒有什麼新的東西值得介紹呢?很多時候,多時間維度就是比單時間維度高效。拿如下的mdx指令碼舉例子,這個mdx是根據嚮導建立的,建立了單一時間維度

[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(

) ;// year to date (

[period].[year-month period calculations].[year to date],

[period].[year].[year].

members,

[period].[month].

members

) =aggregate(

* 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;

endscope;

/*end time intelligence script for the [period].[year-month] hierarchy.*/

這樣做是高效的,但是當你的使用者要求能夠在

year-to-date

的資料上檢視

year-over-year

的增長趨勢的時候,我們該怎麼辦?當然,你可以通過建立第三個計算成員來實現這個功能。然而我們很容易想到:當需求的計算聚合越多,我們建立一維持功能的計算成員數量就會越多。

而這些剛好是多用途的時間屬性層次可以解決的,因為多時間維度可以幫助你控制計算成員的爆發式增長———你可以讓多個計算成員集合在一起。首先,必須像建立初始時間屬性層次一樣通過拖拽列在時間維度上建立乙個新的屬性層次。需要注意的是,要確保把是否聚集(

isaggregatable

)屬性設定為

false

以免聚合所有成員。接下來要確定的是,哪個計算對應與哪個層次,當然該計算必須指向可用的計算聚合。如下的的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(

) ;// year to date (

[period].[year-month period calculations].[year to date],

[period].[year].[year].

members,

[period].[month].

members

) =aggregate(

* 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;

endscope;

/* end time intelligence script for the [period].[year-month] hierarchy.

*/這下使用者就可以通過交叉他們要求的兩個計算成員來實現通過

year-to-date

資料檢視

year-over-year growth

,就跟單獨使用單個計算成員一樣。

php 如何處理高精準計算

bcadd 將兩個高精度數字相加 bccomp 比較兩個高精度數字,返回 1,0,1 bcdiv 將兩個高精度數字相除 bcmod 求高精度數字餘數 bcmul 將兩個高精度數字相乘 bcpow 求高精度數字乘方 bcpowmod 求高精度數字乘方求模,數論裡非常常用 bcscale 配置預設小數點...

型別轉換越界計算機如何處理

物件的型別定義了物件能包含的資料和能參與的運算,其中一種運算被大多數型別支援,就是將物件從一種給定的型別轉換 convert 為另一種相關型別。當在程式的某處我們使用了一種型別而其實物件應該取另一種型別時,程式會自動進行型別轉換。此處,有必要說明當給某種型別的物件強行賦了另一種型別的值時,到底會發生...

url中特殊字元被轉義成編碼後如何處理

開發時有時服務端返回的json中包含url,url中可能含有一些特殊字元,這些特殊字元在傳輸的過程中可能會被轉義成編碼。這時候我們拿到手裡要如何轉換回去呢,先看下那些字元可能會被編碼 例 string url 這裡面的 3f應該是?那麼如何轉回去 try catch unsupportedencod...