Create Function
MaxL create function文は、Javaメソッドを使用して、カスタム定義のEssbase計算関数(CDF)を作成および登録するために役立ちます。
必要な最小権限:
-
ローカル(アプリケーション・レベルの)関数を作成するには、アプリケーション・マネージャ。
-
グローバルな(システム・レベルの)関数を作成する場合は管理者。
Essbaseで独自のカスタム定義関数を作成するための一般的なワークフローは次のとおりです:
-
Javaクラスの関数を開発します。
-
create function MaxL文を使用して、Essbase計算フレームワークに関数を登録します。
-
標準のEssbase計算関数を使用するのと同じ方法で、関数を使用できるようになります。
詳細は、カスタム定義計算関数の開発を参照してください。
キーワード
- create function FUNC-NAME as JAVACLASS.METHOD
-
Javaで開発したカスタム定義の関数をEssbaseサーバー全体で使用可能なグローバル関数として、またはアプリケーションで使用可能なローカル関数として、Essbaseに登録します。グローバル(サーバー全体の)関数を登録するには、FUNC-NAMEに1つのトークンを使用します。ローカル(アプリケーション全体)の関数を登録するには、FUNC-NAMEに2つのトークンを使用します。
- create or replace function FUNC-NAME as JAVACLASS.METHOD
-
グローバルまたはローカルのカスタム定義関数をEssbaseに登録します。その名前の関数が、カスタム定義の関数とマクロ・カタログにすでに存在する場合は、置き換えられます。
- create or replace function ... spec
-
カスタム定義の関数に対して、オプションのEssbase計算機構文の指定の文字列を入力します。これは、次の例のようになります:
@COVARIANCE (expList1, expList2)
。IEssCube.getCalcFunctions JavaメソッドまたはEssListCalcFunctions C API関数の出力文字列で関数が返されるようにする場合は、指定の文字列を使用します。ノート:
計算の指定の文字列を指定しない場合は、コメントも指定できません。
- create or replace function ... with property runtime
-
オプションのwith property runtime句は、カスタム定義関数をランタイム関数として指定します。通常、EssbaseではCDFを事前実行し、その引数はコンパイル時に使用できます。Runtimeプロパティではこのような最適化が抑制されて、関数範囲の各ブロックに対して定数値をオペランドとして持つ(またはオペランドがない)関数が実行されます。組込みの@CALCMODE(CELL)関数を使用する場合、Runtimeとして宣言されたCDFを範囲内のすべてのセルで実行できます。
ノート:
組込みのEssbase計算機関数にはRuntimeプロパティはありません。
Runtimeプロパティは、パフォーマンスに重大な影響を与える可能性があるため、特別な環境でのみ適用します。Runtimeプロパティは、引数以外のものに戻り値が依存するCDFに望ましい場合があります。たとえば、現在の日付や、急速に変化するリレーショナル表の値などです。実行のたびに新しいランダム数を返すランタイム関数@RANDOM()を作成した場合、
"Mem1 = @RANDOM();"
などのメンバー式によって、ブロックごとに異なる値が返されます。コンパイル時に、Runtimeプロパティによって定数に適用されるCDFの事前実行が抑制されます。 - create or replace function ... spec CALC-SPEC-STRING comment
-
オプションのcomment句を使用すると、カスタム定義関数の説明を含めることができます。計算機構文の指定の文字列を作成するには、specも一緒に使用しないとコメントを作成できません。オプションの計算機構文の指定の文字列とコメントは、IEssCube.getCalcFunctions JavaメソッドまたはEssListCalcFunctions C API関数の出力文字列として使用されます。
ノート
-
グローバルまたはシステムレベルの関数を作成するには、FUNC-NAMEに単一の名前を使用します。たとえば、'@COVARIANCE'です。
-
ローカルまたはアプリケーション・レベルの関数を作成するには、FUNC-NAMEにMaxLの二重命名規則を使用します。たとえば、Sample.'@COVARIANCE'です。2つ目のトークンは、特殊文字が含まれているため単一引用符で囲む必要があります。
例
次の例では、@COVARIANCEという名前のグローバルCDFを登録します。このサンプル関数のコードは、Essbaseサーバーの<Oracle Home>/essbase/products/Essbase/EssbaseServer/java/essbase.jar
にあります。
create function '@COVARIANCE' as 'com.hyperion.essbase.calculator.Statistics.covariance' spec '@COVARIANCE (expList1, expList2)' comment 'computes covariance of two sequences given as expression lists';