選択したタプルの計算
タプルを選択すると、アクティブなSmart ViewグリッドでのEssbase計算に重点を置くことができ、ブロック・ストレージ・キューブ内の特定のデータ・スライスにそのスコープが制限されます。
次の項では、タプル計算について説明します:
計算スクリプトで@GRIDTUPLESを使用する構文については、FIX…ENDFIXを参照してください。
タプル計算のユースケース
タプルを選択すると、アクティブなSmart ViewグリッドでのEssbase計算に重点を置くことができ、ブロック・ストレージ・キューブ内の特定のデータ・スライスにそのスコープが制限されます。
タプルの選択は、過剰な計算を回避して、ディメンション全体で非対称グリッド計算を最適化するのに役立ちます。
Essbaseの計算タプルは、MDX問合せで使用されるタプルとは異なります。計算パフォーマンスおよびキューブ・サイズは主に、キューブ内のブロック数によって決まります(特定のブロック・サイズの場合)。このため、計算タプルは疎メンバーの組合せに対してのみ指定されます。さらに、計算スクリプトの実行を容易にするために、単一の疎ディメンションの複数メンバーを計算タプル指定に含めることができます。たとえば("New York"、"California"、"Actual"、"Cola")を計算タプルとして指定すると、次のセルの交差が計算されます:
"New York"->"Actual"->"Cola"
"California"->"Actual"->"Cola"
次の対称グリッドについて検討します。このグリッドは、各製品に同じ市場とシナリオ(Actual)が示されているため、対称です。
次のグリッドは、Diet Cola製品の市場がCola製品の市場より少ないため、非対称です。
FIX文またはSmart Viewグリッドの視点(POV)に複数のディメンションがある場合、デフォルトの計算スコープでは、FIXまたはグリッドのメンバーのクロス積(可能なすべての組合せ)が計算されます。つまり、製品と市場の組合せがグリッドから取得されるPOV駆動の計算では、行とメンバーのすべての組合せが計算されます:
Cola->"New York"
Cola->"Massachusetts"
Cola->"Florida"
Cola->"Connecticut"
Cola->"New Hampshire"
"Diet Cola"->"New York"
"Diet Cola"->"Massachusetts"
"Diet Cola"->"Florida"
"Diet Cola"->"Connecticut"
"Diet Cola"->"New Hampshire"
これは、必要より多くの計算アクティビティとなる場合があります。グリッドに表示された組合せのみを計算する場合は、計算するタプルを指定して、より小さいスライスに計算を制限できます。タプルを計算することで、計算時間やキューブ・サイズも低減できます。
Cola->"New York"
Cola->"Massachusetts"
Cola->"Florida"
Cola->"Connecticut"
Cola->"New Hampshire"
"Diet Cola"->"New York"
"Diet Cola"->"Florida"
タプルベースの計算の理解
計算タプルは、Essbaseブロック・ストレージ計算で使用される、2つ以上の疎ディメンションのメンバーのデータ・スライスを表す方法の1つです。
有効な計算タプルの例:
("Diet Cola", "New York")
("Diet Cola", "Cola", Florida)
(Cola, "New Hampshire")
MDX式を記述する場合は、MDXに適用される次のタプル制限に注意する必要があります:
- MDXタプルには、各ディメンションから単一のメンバーのみを含めることができます
- MDXセットのすべてのタプルは、同じディメンションを同じ順序で表す必要があります
ただし、計算スクリプトでタプルを選択するとき、この要件は便宜上軽減されます。タプル式は自由に記述でき、(@Children(East), Cola)
のように、タプルにメンバー・リストを記述できます。
視点計算のためのタプルの選択
タプルを選択する簡単な方法は、FIX文内のリストとして、計算スクリプトに明示的に挿入することです。
FIX文の書式は、次のとおりです:
FIX (fixMbrs)
COMMANDS ;
ENDFIX
次のFIX文では、コマンド・ブロックが始まる前に2つのタプルが指定されています。タプルは、タプルの集合であるセットを区切る中カッコ{ }で囲まれています。
FIX({
(@Children(East), Cola),
("New York", Florida, "Diet Cola")
})
Sales (Sales = Sales + 10;);
ENDFIX
タプルを選択するもう1つの方法は、計算実行時にSmart ViewグリッドPOVに存在するメンバーに基づいて状況に応じて選択する方法です。そのためには、計算スクリプトで@GRIDTUPLES関数をFIXの引数として指定します。
FIX ({@GRIDTUPLES(Product, Market)})
Sales (Sales = Sales + 10;);
ENDFIX
次のグリッドに対してSmart Viewからこの計算スクリプトを実行すると、表示されている製品と市場の組合せのみが計算されます。たとえば、"Diet Cola"->Massachusettsはグリッドに明示的に表示されていないため、計算されません。グリッドにActualのみが表示されていても、すべてのシナリオ(このサンプル・キューブでは3番目の疎ディメンション)が計算されることに注意してください。これは、Scenarioディメンションが計算スクリプトのGRIDTUPLES文の一部ではないためです。
タプルの選択は、タプルの明示的なリストを使用して選択するか、@GRIDTUPLES関数を使用して選択するかに関係なく、FIX…ENDFIX計算コマンドのコンテキストでのみ適用されます。FIX文の構文は、タプル選択を可能にするように拡張されました:
FIX ([{ tupleList | @GRIDTUPLES(dimensionList) },] fixMbrs)
COMMANDS ;
ENDFIX
- tupleList - タプルのカンマ区切りのセット。
- dimensionList - アクティブなSmart Viewグリッドのメンバーを使用して計算領域を定義する、少なくとも2つの疎ディメンション。(計算スクリプトでは、タプルを定義する際に疎ディメンションのみを使用できます。)
- fixMbrs - メンバーまたはメンバーのリスト。
計算スコープを削減するためのタプル選択の例
Smart ViewグリッドおよびEssbase計算スクリプトのFIX文を使用して、グリッドの視点(POV)に基づいて選択したメンバーのタプルを計算できます。または、FIX文にタプルの組合せを明示的に入力すると、特定のSmart Viewグリッドに依存せずに計算スコープを定義できます。
選択したタプルを計算することによって、計算スクリプトとSmart Viewグリッドの両方で非対称のリージョンを効率的に操作できます。
次に例を示します:
- タプル選択なし - 現在のSmart Viewグリッドの視点(POV)に基づいてデフォルトの方法で計算します。計算は特定のタプルに制限されません。
- 指定された疎ディメンションの選択 - 計算スクリプトで指定された2つ以上の疎ディメンションからタプルを計算します。計算は、Smart Viewグリッドに存在するタプル・ディメンションのメンバーに制限されます。
- コンテキスト疎ディメンションの選択 - 実行時に選択した疎ディメンションのタプルを計算します。計算は、Smart Viewグリッドに存在するタプル・ディメンションのメンバーに制限されます。
例を試すには、Essbase Webインタフェースの「ファイル」領域にあるgalleryフォルダのTechnical > Calc
セクションからCalcTuple_Tuple.xlsx
ワークブック・テンプレートをダウンロードします。手順については、ワークブックのREADMEワークシートを参照してください。
タプル選択なし
タプルを選択しない場合に行われるデフォルトのEssbaseブロック・ストレージ計算動作を説明するために、次の計算スクリプトでは、Smart ViewグリッドからProductおよびMarketディメンション・メンバーのクロス積全体を計算します。
SET RUNTIMESUBVARSブロックで定義されている2つのランタイム代替変数(RTSV)を使用すると、Smart Viewから計算が実行される際、計算は、グリッドに表示されるProductおよびMarketの視点に制限されます。
SET RUNTIMESUBVARS
{
ProductGridMembers = POV
<RTSV_HINT><svLaunch>
<description>All Product's members on the grid</description>
<type>member</type>
<dimension>Product</dimension><choice>multiple</choice>
</svLaunch></RTSV_HINT>;
MarketGridMembers = POV
<RTSV_HINT><svLaunch>
<description>All Market's members on the grid</description>
<type>member</type> <dimension>Market</dimension><choice>multiple</choice>
</svLaunch></RTSV_HINT>;
};
FIX (
&ProductGridMembers, &MarketGridMembers
)
Marketing(
Marketing = Marketing +1;
);
ENDFIX
指定された疎ディメンションの選択
@GRIDTUPLES関数を使用してProductおよびMarketディメンションのタプルを選択すると、このEssbaseブロック・ストレージ計算スクリプトでは、これら2つのディメンションのみのタプルを計算し、Smart Viewから計算が実行された時点でSmart Viewグリッドに存在するメンバーにスコープを制限します。
FIX (
{@GRIDTUPLES(Product, Market)}
)
Marketing(
Marketing = Marketing + 1;
);
ENDFIX
タプルで指定された疎ディメンションのみを修正することで、計算に含まれるブロック数は、デフォルト計算よりはるかに少なくなります。ただし、修正対象でないディメンションのメンバー(Year、Scenario)はすべて、この計算スクリプトによって計算されます。
コンテキスト疎ディメンションの選択
@GRIDTUPLES関数およびランタイム代替変数を使用して、このEssbaseブロック・ストレージ計算スクリプトは、RTSVプロンプトの疎ディメンション選択項目に基づいて、グリッドから選択されたタプルのみを計算します。
SET RUNTIMESUBVARSブロックに定義されているランタイム代替変数&DimSelectionsによって、計算スコープがキューブの疎ディメンションのみ(Scenarioを除く)に制限されます。FIX文で使用される@GRIDTUPLES関数がこの変数を呼び出して、計算する交差の数を制限します。
SET RUNTIMESUBVARS
{
DimSelections = "Version", "Site", "Entity", "Product", "Market"
<RTSV_HINT><svLaunch>
<description>List two or more sparse dimensions used for forming calculation tuples:</description>
<type>string</type>
</svLaunch></RTSV_HINT>;
};
FIX (
{@GRIDTUPLES(&DimSelections)}
)
Marketing(
Marketing = Marketing + 1;
);
ENDFIX
計算には前述の例よりさらに少ないブロック数が含まれます。この場合はタプル定義がProduct->Marketを超える疎ディメンションに拡張されているためです。
例を試すには、Essbase Webインタフェースの「ファイル」領域にあるgalleryフォルダのTechnical > CalcセクションからCalcTuple_Tuple.xlsx
ワークブック・テンプレートをダウンロードします。手順については、ワークブックのREADMEワークシートを参照してください。