Create Function

MaxL create function文は、Javaメソッドを使用して、カスタム定義のEssbase計算関数(CDF)を作成および登録するために役立ちます。

必要な最小権限:

  • ローカル(アプリケーション・レベルの)関数を作成するには、アプリケーション・マネージャ。

  • グローバルな(システム・レベルの)関数を作成する場合は管理者。

Essbaseで独自のカスタム定義関数を作成するための一般的なワークフローは次のとおりです:

  1. Javaクラスの関数を開発します。

  2. create function MaxL文を使用して、Essbase計算フレームワークに関数を登録します。

  3. 標準のEssbase計算関数を使用するのと同じ方法で、関数を使用できるようになります。

詳細は、カスタム定義計算関数の開発を参照してください。

構文


crefunc.gifの説明が続きます
図crefunc.gifの説明

MaxL create function文を使用して、次の方法で関数を作成します:

キーワード

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';