機械翻訳について

集約ストレージ・データベースでのカスタム計算

カスタム計算は、集約ストレージ・データベースで繰返し計算を実行できるようにすることで、Essbaseのアナリティク機能を拡張します。

ターゲット・レベル0のセルを更新する集約ストレージ・データベースのカスタム計算を記述できます。 カスタム計算スクリプトはMDXで表されます。

カスタム計算を使用すると、一般会計の勘定科目残高に対して基本的な計算を実行し、その結果をEssbase集約ストレージ・データベースのターゲット・レベル0メンバーに書き込むことができます。 勘定科目残高または固定金額に対して計算を実行し、会計期間ごとに繰り返すようにスケジュールできます。

集約ストレージ・データベースでのカスタム計算は、データベースが一般会計レポートに使用され、二重入力会計が有効な場合に役立ちます。 アセットや費用などの借方アイテムは、資本や収益などの貸方アイテムと貸借一致する必要があります。

カスタム計算を作成および実行するには、次のワークフローを使用します:

  • MDXで表される計算スクリプトを作成します。

  • 計算を実行するデータベースの領域を選択します。 ターゲットおよびPOV (視点)パラメータを使用して、実行時に領域を指定します。

  • 借方と貸方の処理を使用する場合は、アウトラインで借方と貸方のメンバーを選択して、正の値と負の値を記述します。 これらのパラメータは実行時に指定します。

  • オフセット・エントリを使用する場合は、オフセット・エントリを作成する領域を選択します。 MDXタプルを使用して、実行時にこのパラメータを指定します。 オフセットが指定されていないか空の場合、オフセット計算は実行されません。

    ノート:

    一般会計の簿記では、相殺入力は元帳の反対側の相殺メジャーです。たとえば、1月の$100貸方には元帳の借方側に$100相殺が追加されている場合があるため、元帳はその金額の次回費用の準備として貸借一致できます。

  • カスタム計算スクリプトを実行します。

カスタム計算基準のリスト

カスタム計算機能は、指定した様々な基準によって異なります。 続行する前に、次の条件を確認してください。

表37-1 カスタム計算基準の説明

条件 説明

POV

カスタム計算が実行されるコンテキストを記述するデータベース内の対称リージョン。

この引数には属性メンバーを使用できません。

計算スクリプト

MDXで表される計算スクリプト。

式の左側で属性メンバーを使用することはできません。

ターゲット

MDXで表されるタプル引数で、計算結果が書き込まれるデータベース内のリージョンを定義します。 この引数は、各式の左側とオフセットと組み合せて、結果およびオフセット値が書き込まれる場所を決定します。

この引数には属性メンバーを使用できません。

(オプション)オフセット

各ソース金額のオフセット値が書き込まれるデータベース内のロケーション。

この引数には属性メンバーを使用できません。

(オプション)貸方および借方メンバー

ダブル入力会計では、1つのトランザクションの仕訳を貸借一致させます。 どちらもMDXメンバー式です。 借方メンバーは正の結果値が書き込まれるメンバーを示し、貸方メンバーは負の結果値が書き込まれるメンバーを示します。

この引数には属性メンバーを使用できません。

ソース・リージョン

スクリプト内の式によって参照されるキューブのリージョンを指定するMDXセット式。

カスタム計算の記述

カスタム計算スクリプトは、.csc拡張子を使用して作成および格納するファイルです。 MDXに、セミコロンで終了する一連のタプル式のペアを含むカスタム計算スクリプトを作成します。 構文:

tuple := numeric_value_expression;

tupleは、1つ以上のメンバーのMDX仕様で、同じディメンションのメンバーを複数指定することはできません。 タプルは等式の左側にある必要があり、カスタム計算の結果が書き込まれる場所を決定する際の主要なファクタです。

タプル式の中に記述できるのはメンバー名のみです。 メンバー関数の使用は、カスタム計算スクリプトではサポートされていません。

ノート:

結果のターゲットを決定する二次係数はtargetパラメータで、三次係数はPOVパラメータです。 計算スクリプトの一部としてではなく、計算の実行時に2番目と3番目のパラメータを指定します。

numeric_value_expressionは、数値や算術演算などの単純なMDX数値式です。 式は、等式の右辺である必要があります。 算術演算子のみ使用できます。 算術演算子以外(AND、OR、IF文など)を使用すると、エラーが返されます。

メンバー名は数値式で使用できますが、メンバー関数の使用はカスタム計算スクリプトではサポートされていません。

カスタム計算スクリプトでは、等式の左側で属性メンバーを使用できません。

Essbaseのパフォーマンス・ヒントとして機能するソース・リージョンも定義する必要があります。 Essbaseは、ソース・リージョンで指定されたデータをプリフェッチし、それを使用してスクリプトで指定された計算を実行します。

カスタム計算の実行

MaxL execute calculation (集約ストレージ)文を使用して、カスタム計算を実行できます。

Java APIメソッドIEssPerformCustomCalc.performCustomCalcまたはC API関数EssPerformCustomCalcASOをコールして、APIを使用してカスタム計算スクリプトを実行することもできます。

Oracle Hyperion Calculation Managerを使用して、カスタム計算を設計し、Enterprise Scheduling Servicesに実行するためにデプロイすることもできます。

カスタム計算のサンプル・ユースケース

次のディメンションを持つアウトラインについて考えてみます:

  • CompanyA、CompanyBおよびその他の子を含むCompany

  • 「部門」(101、102、103などの番号付きの部門を含む)。

  • Accountでは、勘定科目5740が賃貸費用勘定科目で、SQFTが各部門の面積の記録に使用される統計勘定科目です。

  • Scenarioでは、実績メンバーはデータが転記される場所で、配賦メンバーは配賦およびカスタム計算が格納される場所です。 Scenarioメンバーは、ActualおよびAllocation子メンバーを集約する親です。

  • Yearは、月と四半期で編成された時間ディメンションです。

  • Geographyは、州および都市別に編成されたディメンションです。

  • AmountTypeでは、借方がターゲットで、貸方がオフセットです。

  • 「プロジェクト」は、Proj1、Proj2などのプロジェクトを含むディメンションです。

POVは、カスタム計算を実行する場所を示すMDXセット式です。 次のように指定されます:

CrossJoin( { ( [Company], [101], [Jan], [Scenario] ) },
           Descendants( Geography, Geography.Levels(0)) )

DebitMemberは、正の結果値が書き込まれる借方メンバーを示すMDXメンバー式です。 [BeginningBalance_Debit]として指定されます。

CreditMemberは、結果の負の値とオフセット値を書き込む必要があるクレジット・メンバーを示すMDXメンバー式です。 [BeginningBalance_Credit]として指定されます。

ノート:

すべての結果値の合計が負数の場合、相殺は借方メンバーに書き込まれます。

offsetは、オフセット・エントリを作成する場所を示すMDXタプル式です。 ([Account_NA], [Project_NA])として指定されます。

オフセット式をターゲットおよびPOVと組み合せて、オフセット・エントリが作成されるロケーションを決定します。 ディメンションが重複する場合、オフセット・ロケーションを解決する順序は、オフセット、ターゲットおよびPOVです。

ターゲットは、カスタム計算の結果を書き込む場所を示すMDXタプル式です。 (Allocation)として指定されます。

ターゲット式がカスタム計算スクリプトのPOVおよび各行の左側と組み合されて、結果が書き込まれるロケーションが決定されます。 ディメンションが重複する場合、ターゲットのロケーションを解決する順序は、方程式、ターゲットおよびPOVの左側の順序となります。 この例では、ターゲットがPOVで指定されたシナリオ・メンバーを上書きするため、結果は配賦メンバーに書き込まれます。

次に、カスタム計算スクリプトの例を示します:

(AccountA,Proj1) := 100;
([AccountB], [Proj1]) := ([AccountB], [Proj1]) * 1.1;
(AccountC,Proj1) := 
	((AccountB,Proj1,2007) + (AccountB, Proj1)) / 2;
(AccountA,Proj2) := 
	((AccountD,Proj1) + 
	  (AccountB,Proj2)) / 2;

POVの組合せごとに、次の手順を実行

  • 計算スクリプトは、現在のPOVの組合せのコンテキストで実行されます。

  • 1つのオフセット値がターゲット・ロケーションに書き込まれます。

ノート:

各式(計算スクリプトの行)は、順番にではなく、同時に実行されます。 したがって、あるformulaの結果を後続のformulaで使用することはできません。

ソース・リージョンを定義するには、カスタム計算スクリプトを調べて、方程式の右側で参照されているメンバーを特定します。 少なくとも、ソース・リージョンには、カスタム計算スクリプトの代入文の右側のすべてのメンバーが含まれている必要があります。

ソース・リージョンを単一のMDXセットとして定義します。 等式の右側のメンバーが複数のディメンションのメンバーである場合は、CrossJoinを使用して2つのセットからセットを作成できます。 CrossJoinは2つのセットのみを受け入れるため、ネストされたCrossJoinsを使用する必要がある場合があります。

前述のカスタム計算スクリプトのソース・リージョンは次のとおりです:


Crossjoin(
 {[AccountB], [AccountD]}, 
   Crossjoin(
    {[Proj1], [Proj2]}, {[2007]}
   )
)

スクリプトに割り当てられていないメンバーをソース・リージョンに含める必要はありません。 たとえば、スクリプトで使用されていない[AccountC]をソース・リージョンに追加した場合、これは無視され、パフォーマンスがわずかに低下する可能性があります。

ソース・リージョンの数値を考慮する必要はありません。 たとえば、カスタム計算スクリプトの次の割当てでは、ソース・リージョンに何も追加する必要はありません : ([Bud Var]):=10

空のタプルのスキップによるカスタム計算の最適化

カスタム計算スクリプトを最適化して、大規模な疎データ・セットの計算時にメモリー・リソースを節約できます。

大規模なデータ・セットは非常に疎である可能性があるため、カスタム計算スクリプトでNONEMPTYTUPLEプロパティを使用すると、スクリプトを最適化してメモリー・リソースを節約できます。

MDXで、セミコロンで終了するタプル式のペアを含むカスタム計算スクリプトを作成します。 オプションで、カスタム計算スクリプトにNONEMPTYTUPLEプロパティ句を含めることで、空の結果セットを計算から除外できます。

カスタム計算スクリプトでNONEMPTYTUPLEプロパティ句を使用すると、特定のnonempty_member_listが空の場合は常にタプルに対して計算されるセル値が空であることがEssbaseに示されます。

構文

use_optimized_way;
tuple := [NONEMPTYTUPLE (nonempty_member_list)] numeric_value_expression;

ここで

  • use_optimized_way-計算スクリプトでNONEMPTYTUPLEプロパティを使用可能にするために必要なリテラル・キーワード。 省略すると、NONEMPTYTUPLEディレクティブは無視されます。

  • tuple-1つ以上のメンバーのMDX仕様で、同じディメンションのメンバーを複数指定することはできません。

  • NONEMPTYTUPLE-計算のパフォーマンスを最適化するために使用できるオプションのプロパティ。 これを使用する場合は、nonempty_member_listを使用してこのリテラル・プロパティに従う必要があります。

  • nonempty_member_list-異なるディメンションのカンマ区切りのメンバー名。

  • numeric_value_expression-数値や算術演算などの単純なMDX数値式。 式は、等式の右辺である必要があります。 算術演算子のみ使用できます。 算術演算子以外(AND、OR、IF文など)を使用すると、エラーが返されます。

次のカスタム計算スクリプトの例には、空のタプルを計算パスに含まれないように除外するNONEMPTYTUPLEプロパティ句が含まれています。

use_optimized_way;
([Balance].[Net Balance].[Net Change].[Allocation Out]):= NONEMPTYTUPLE ([Balance].[Remainder],[Rule]) -(([Balance].[Remainder],[Rule])*(20.24000/100));
([2014], [August], [Actual]):= NONEMPTYTUPLE ([2014], [January], [Actual]) ([2014], [January], [Actual]);