疎メンバーの組合せのグループ化

Essbaseブロック・ストレージ・データ・ロードのパフォーマンスを向上させるために、必要なディスクI/O (読取りおよび書込み)数を最小限に抑えるようにデータを構造化できます。

この項は、集約ストレージ・キューブには適用されません。

パフォーマンス向上に最も効果的な戦略は、キューブに対する書込みや読取りの間にEssbaseが実行する必要のあるディスクI/O数を最小化することです。Essbaseではデータがブロックごとにロードされるため、ソース・データを物理的なブロック編成に対応するように編成すると、Essbaseで実行する必要のある物理的なディスクI/O数が減ります。

ソース・データを整理して、疎ディメンションの同じ一意の組合せを持つレコードをグループ化します。この配列はデータベース内のブロックに対応します。

この章の例では、この戦略に従ってデータを編成する方法を示します。これらの例では、次に説明するように、Sample.Basicキューブのサブセットを使用します。

表34-1 例のディメンションと値

疎の属性以外のディメンション 密ディメンション

Scenario (Budget、Actual)

Measures (Sales、Margin、COG、Profit)

Product (Cola, Root Beer)

Year (Jan, Feb)

Market (Florida, Ohio)

 

ノート:

属性ディメンションは疎ディメンションですが、データを属性ディメンションにロードないため、この項での説明には関係しません。

次に示すデータ・ソースについて考えてみます。疎ディメンション・メンバーの組合せ別にグループ化されていないため、このデータは最適化のためのソートは行われていません。Essbaseでの各レコードの読取りのたびに、疎ディメンションの異なるメンバーの処理が必要になります。

Jan
Actual    Cola          Ohio      Sales    25
Budget    "Root Beer"   Florida   Sales    28
Actual    "Root Beer"   Ohio      Sales    18
Budget    Cola          Florida   Sales    30

Essbaseでは、1つではなく4つのブロックにアクセスするため、このデータ・ロードには時間がかかります。

同じSample.Basicキューブの最適に編成されたデータ・ソースでは、疎ディメンション・メンバーの一意の組合せによってActual -> Cola -> Ohioの順にソートされた異なるレコードが示されます。Essbaseで1つのブロックにアクセスするのみで、これらのレコードがロードされます。

Actual     Cola    Ohio    Jan   Sales     25
Actual     Cola    Ohio    Jan   Margin    18
Actual     Cola    Ohio    Jan   COGS      20
Actual     Cola    Ohio    Jan   Profit     5

レコードごとに多数のセルをロードするソースを使用できます。レコードが、一意の疎ディメンション・メンバーの組合せでグループ化されていることを確認します。次に、複数の値を指定するレコードのディメンションが密ディメンションであるようにレコードを並べます。

次の例では、ヘッダー・レコードを使用して、密ディメンションであるMeasuresディメンションのメンバーを特定しています。データは、最初に密ディメンションであるYearのメンバーごとにソートされた後、他のディメンションのメンバーごとに階層的にグループ化されています。各レコードには、Measuresディメンションの複数の値が示されています。

                                 Sales  Margin   COG  Profit
Jan Actual  Cola         Ohio       25      18    20       5
Jan Actual  Cola         Florida    30      19    20      10
Jan Actual  "Root Beer"  Ohio       18      12    10       8
Jan Actual  "Root Beer"  Florida    28      18    20       8

この例では、必要な行が見出しと最初のデータ行の2行であることに注目してください。前の例では、同じデータに対して4行が必要です。