28 カスタム定義計算マクロの開発
Essbaseカスタム定義マクロ(CDM)を使用すると、複数の計算関数を単一の関数に結合できます。それらは、計算スクリプトまたは式で使用できます。
テスト・アプリケーション内でローカルに新しいマクロを作成しテストします。カスタム定義マクロは、テスト・アプリケーションでのテストが完了し、本番環境で使用できる状態になった後にのみ、グローバルに登録します。
カスタム定義マクロを作成し管理するには、データベース・マネージャ以上である必要があります。
カスタム定義マクロは、ブロック・ストレージ・キューブの場合のみサポートされています。
カスタム定義マクロの命名
Essbaseカスタム定義マクロの名前は、一意である必要があり、@記号で始まる必要があります。ローカル・マクロは、前にアプリケーション名が付加されます。
カスタム定義マクロに名前を付けるときには、次のガイドラインに従います。
-
マクロ名は、たとえば@MYMACROのように、@記号で始めます。名前の残りの部分には、文字、数字および記号(@、#、$、_)を含めることができます。マクロ名にスペースは含めないでください。
-
マクロが他のマクロによってのみ呼び出される場合、マクロ名を@_で始めて、一般用途のマクロおよび関数と区別します。
-
マクロには一意の名前を付けます。また、マクロ名は、カスタム定義関数の名前とも、既存の計算関数の名前とも異なる必要があります。
ノート:
アプリケーションにグローバル・マクロと同じ名前のローカル・マクロが含まれている場合、ローカル・マクロが優先され、計算に使用されます。
-
ローカル・マクロの場合、マクロ名の先頭にアプリケーション名を付けて、アプリケーション名とマクロ名をピリオドで区切る必要があります。
AppName
.@
MacroName
例:
Sample.@MYMACRO
-
グローバル・マクロは、そのマクロが作成されたEssbase Serverサーバー上で実行されているすべてのアプリケーションで使用できるため、アプリケーション名を割り当てる必要はありません。
カスタム定義マクロの作成
カスタム定義マクロを作成すると、Essbaseによってそれがカタログ内に登録されます。マクロは、グローバルにすることも、アプリケーションに対してローカルにすることもできます。その後、そのマクロは、カタログから削除されるまで、式と計算スクリプトで使用できます。
カスタム定義マクロは次の方法で登録します。
-
ローカルとして。マクロは、作成されたEssbaseアプリケーションでのみ使用できます
-
グローバルとして。マクロは、作成されたEssbaseサーバーで実行されているすべてのEssbaseアプリケーションで使用できます
カスタム定義マクロを作成するには:
create macro MaxL文を使用します。
次のMaxL文では、Sampleアプリケーションで使用する@COUNTRANGEという名前のローカル・マクロが作成されます。
create macro Sample.'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';
次のMaxL文では、@COUNTRANGEという名前のグローバル・マクロが作成されます。
create macro'@COUNTRANGE'(Any) AS
'@COUNT(SKIPMISSING, @RANGE(@@S))'
spec '@COUNTRANGE(MemberRange)'
comment 'counts all non-missing values';
カスタム定義マクロの使用方法
カスタム定義マクロは、Essbaseのネイティブ計算コマンドと同じ方法で使用します: それらを計算スクリプトでコールするか、アウトライン式に関連付けます。
カスタム定義マクロを使用するには、次の操作を行います。
カスタム定義マクロの表示
Essbaseでカスタム定義マクロを表示して、それが正常に作成されたかどうか、およびそのスコープがローカルかグローバルかを確認します。
カスタム定義マクロを表示するには、MaxL文のdisplay macroを使用します。
例
次のMaxL文では、サンプル・アプリケーションで定義されているマクロのみが表示されます。
display macro on application Sample;
次のMaxL文では、すべてのグローバル・マクロおよびローカル・マクロが表示されます(それらを表示するアクセス権がある場合)。
display macro;
カスタム定義マクロの更新
Essbaseでカスタム定義マクロの構文または動作を変更するには、まずそのスコープがローカルかグローバルかを特定し、次にMaxL文のcreate or replace macroを使用してその定義を更新します。
カスタム定義マクロを更新するには、次のようにします。
例
次のMaxL文によって、Sampleアプリケーションのみで使用されるローカル・マクロ@COUNTRANGEが変更されます。
create or replace macro Sample.'@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';
次のMaxL文により、グローバル・マクロ@COUNTRANGEが変更されます。
create or replace macro '@COUNTRANGE'(Any)
as '@COUNT(SKIPMISSING, @RANGE(@@S))';
カスタム定義マクロのコピー
カスタム定義マクロは、適切なアクセス権がある任意のEssbaseサーバーとアプリケーションにコピーできます。データベース・マネージャ以上である必要があります。
カスタム定義マクロをコピーするには、MaxLのcreate or replace macro文を使用します。
例
次のMaxL文では、@COVARIANCEマクロのコピーが作成されます。
create macro Sample.'@COVARIANCE2'(single, single) as '@COVARIANCE'(single, single);
カスタム定義マクロの削除
Essbaseからカスタム定義マクロを削除するには、まずそのスコープがローカルかグローバルかを特定し、次にMaxL文のdrop macroを使用します。
カスタム定義マクロを削除するには:
次のMaxL文では、Sampleアプリケーションでのみ使用されているローカル・マクロ@COUNTRANGEが削除されます。
drop macro Sample.'@COUNTRANGE';
次のMaxL文では、グローバル・マクロ@COUNTRANGEが削除されます。
drop macro '@COUNTRANGE';
カスタム定義マクロのカタログのリフレッシュ
マクロを追加、更新または削除した後は、カスタム定義マクロのEssbaseカタログをリフレッシュします。変更がローカルである場合はMaxL文のrefresh custom definitionsを使用し、変更がグローバルである場合はEssbaseサーバーを再起動します。
サーバー上のすべてのアプリケーションのカスタム定義マクロのカタログをリフレッシュするには、サーバーを再起動します。独立デプロイメントの場合はサーバーの起動、停止およびチェックを、OCIでのスタック・デプロイメントの場合はコマンドの使用によるプロセスの起動、停止およびステータス表示を参照してください。
1つのアプリケーションのカスタム定義マクロのカタログをリフレッシュするには、MaxLのrefresh custom definitions文を使用します。
たとえば、次のMaxL文によって、サンプル・アプリケーションのカスタム定義マクロのカタログがリフレッシュされます。
refresh custom definition on application sample;