聚總儲存大綱的 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 維度:


此圖像顯示 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。此方法更具牽涉性,但可以節省許多位元。