聚總儲存大綱的 64 位元維度大小限制
Essbase 彙總儲存 (ASO) 立方體大綱不能超過每個維度的 64 位元。
維度所需的位元數是任何層級 0 子項所使用的最大位元數,包括替代階層和相關屬性維度中的層級 0 子項。為了進行成員編號,會將屬性維度視為其基礎維度的替代階層。
一般而言,決定維度中任何成員所需的位元數的公式可以用下列方式表示:
#_bits_member’s_parent + log(x)其中 x 是父項的子項數目。
例如,如果成員的父項是需要 5 位元的成員 A,而 A 有 10 個子項,則每個子項所需的位元數為:
5 +log(10) = 9 bits維度或階層的頂端成員通常使用 0 位元。不過,當一或多個最上層層代包含僅標籤成員時,僅標籤成員不會接收成員編號 (因為它們不會被視為儲存的成員)。因此,如果第一個非限定標籤層代中有 x 個成員,這些成員就會使用 log ( x) 位元。下方的其餘子項會正常編號。
同樣地,如果維度或階層是動態的,則只有儲存或共用的層級 0 成員會接收成員編號。這些成員所需的位元數為 log ( x),其中 x 是儲存或共用的層級 0 成員數目 (亦即,不屬於公式成員的層次 0 成員數目)。
不過,如果有任何替代階層已儲存 (非共用) 層級 0 成員,則維度中每個階層的每個成員 (包括相關聯的屬性維度) 會使用額外的 log ( x) 位元,其中 x 是此基礎維度的階層與相關屬性維度的總數。
下列範例使用 ASOsamp.Basic 資料庫中的 Products 維度:

「產品」維度有兩個階層:所有「商品」與「高端商品」,這是替代階層。「高端商品」有一個儲存的層級 0 成員:「儲存的成員」。Products 維度沒有任何關聯的屬性維度。
成員所有商品與高端商品使用日誌 (2) = 1 位元。
附註:
如果替代階層「高階商品」沒有任何儲存的層級 0 成員,則每個階層的最上層成員 (以及相關聯的屬性維度) 都會使用 0 位元。
每個層級 0 子項所需的位元數計算:
All Merchandise = 1 bit
Personal Electronics, Home Entertainment, Other = 1 + log(3) = 3 bits
Digital Cameras/Camcorders, Handhelds/PDAs, Portable Audio = 3 + log(3) = 5
Children of Digital Cameras/Camcorders = 5 + log(3) = 7
Children of Handhelds/PDAs = 5 + log(3) = 7
Children of Portable Audio = 5 + log(2) = 6
Televisions, Home Audio/Video = 3 + log(2) = 4
Children of Televisions = 4 + log(5) = 7
Children of Home Audio/Video = 4 + log(4) = 6
Computers and Peripherals = 3 + log(1) = 3 **
Systems, Displays, CD/DVD drives = 3 + log(3) = 5
Children of Systems = 5 + log(2) = 6
High End Merchandise = 1 bit
Flat Panel, HDTV, Stored Member = 1 + log(3) = 3 bits
「成員電腦」和「周邊設備」的位元數 (3) 與其父項「其他」的位元數相同。
Products 維度中任何層級 0 子項使用的最大位元數為 7 (數位相機的子項和電視的子項)。因此,Products 使用 7 位元,小於 64 位元的尺寸大小限制。
如果維度大小超過 64 位元:
-
Essbase 會在儲存大綱時產生下列錯誤:
Hierarchy [DimensionName] is too complex. It exceeds the maximum member number width of 64 bits. See application log for details. -
Essbase 會記錄與應用程式日誌中下列訊息類似的訊息:
Member number for member [level0member] requires [65] bits to encode Member [level0member] contributes [5] bits to member number Member [level1parent] contributes [20] bits to member number Member [level2parent] contributes [20] bits to member number Member [level3parent] contributes [20] bits to member number
若要修正錯誤,請使用下列其中一個建議:
-
如果可能,請刪除訊息中參照之任何成員的某些同層級。乘冪減少同層級數,可以節省一個位元。例如,假設對成員編號貢獻 5 位元的 level0member 有 18 個同層級,包括其本身。由於 log (16) = 4,將同層級數減少至 16 個或更少,節省 1 個位元。同樣地,將同層級數目減少至 8 個或更少,可以節省兩個位元。
-
重新分類訊息中所參照之成員的某些同層級。例如,將一半的 level0member 的 18 同層級移到另一個沒有多個子項的父項。或者,將新父項建立為 level1parent 的同層級,並在新成員下移動一半的 level1parent 子項。此方法會儲存一個位元。
-
結合一些中間層次。例如,將 level0member 及其所有同層級移至 level2parent 的子項,然後移除 level1parent。此方法更具牽涉性,但可以節省許多位元。