集約ストレージのアウトラインに対するディメンション当たり64ビットのサイズ制限

Essbase集約ストレージ(ASO)キューブのアウトラインは、ディメンション当たり64ビットより大きくはできません。

1つのディメンションに必要なビット数は、代替階層および関連付けられた属性ディメンションのレベル0の子を含む、あらゆるレベル0の子で使用される中で最大のビット数になります。メンバーの番号付けの目的で、属性ディメンションはその基本ディメンションの代替階層として処理されます。

通常、あるディメンションの任意のメンバーに必要なビット数を求める式は次のように表されます。

#_bits_member’s_parent + log(x)

ここで、xは、その親の子の数です。

たとえば、メンバーの親が、5ビットを必要とするメンバーAであり、Aに10個の子が存在する場合、個々の子に必要なビット数は次のようになります。

5 +log(10) = 9 bits

ディメンションまたは階層の最上位のメンバーは通常、0ビットを使用します。ただし、1つ以上の最上位の世代が、ラベルのみのメンバーで構成されている場合、ラベルのみのメンバーは、(保管されたメンバーとはみなされないため)メンバー番号を受け取りません。したがって、ラベルのみではない最初の世代にx個のメンバーが存在する場合、このメンバーはlog(x)ビットを使用します。この下の残りの子は通常どおり番号付けされます。

同様に、ディメンションまたは階層が動的である場合、保管または共有されたレベル0のメンバーのみがメンバー番号を受け取ります。このメンバーに必要なビット数はlog(x)で、xは保管または共有されたレベル0のメンバーの数(つまり、式メンバーではないレベル0のメンバーの数)です。

ただし、代替階層が(非共有の)レベル0のメンバーを保管している場合、ディメンション(関連付けられた属性ディメンションを含む)のすべての階層の各メンバーは追加のlog(x)ビットを使用します。ここでxは、この基本ディメンションに対する階層および関連付けられた属性ディメンションの合計数です。

次の例では、ASOsamp.Basicデータベース内のProductsディメンションを使用しています。


このイメージは、イメージの後のテキストで説明されている、Productsディメンションを示しています。

ProductsディメンションにはAll Merchandiseと、代替階層であるHigh End Merchandiseの2つの階層があります。High End Merchandiseには、Stored Memberという1つの保管されたレベル0メンバーがあります。Productsディメンションには、関連付けられた属性ディメンションはありません。

All MerchandiseとHigh End Merchandiseのメンバーはlog(2) = 1ビットを使用します。

ノート:

代替階層High End Merchandiseに、保管されたレベル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

Computers and Peripheralsのメンバーは、その親であるOtherと同じビット数(3)になります。

Productsディメンションのレベル0の子で使用される最大のビット数は7 (Digital Camerasの子およびTelevisionsの子)です。したがって、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

エラーを修正するには、次のいずれかの推奨事項を使用します。

  • 可能な場合は、メッセージで参照されているいずれかのメンバーの兄弟をいくつか削除します。兄弟の数を減らす場合、減らす数が2の累乗ごとに1ビット節約されます。たとえば、メンバー番号に対して5ビットを占めているlevel0memberに、それ自体も含めて18個の兄弟があると仮定します。兄弟の数を16以下に減らすと、log(16) = 4になるため、1ビット節約されます。同様に、兄弟の数を8以下に減らすと、2ビット節約されます。

  • メッセージで参照されているメンバーの兄弟をいくつか再分類します。たとえば、level0memberの18個の兄弟の半数を、それよりも子の数が少ない別の親に移動します。または、level1parentの兄弟として新しい親を作成し、level1parentの子の半数を、その新しいメンバーの下に移動します。このアプローチでは、1ビット節約されます。

  • いくつかの中間レベルを結合します。たとえば、level0memberとその兄弟すべてをlevel2parentの子になるように移動してから、level1parentを削除します。このアプローチはさらに複雑ですが、多くのビットが節約されます。