@MBRCOMPARE
Essbaseの@MBRCOMPARE計算関数は、比較条件に一致するメンバー名のセットを返します。メンバー名はアルファベット順に評価されます。この関数は、一意の重複した名前のアウトラインで使用できます。
構文
@MBRCOMPARE (compOperator, tokenString, topMbrinHierarchy, cdfName)
パラメータ
- compOperator
-
< (未満)、<= (以下)、> (大なり)、>= (以上)、== (等しい)、!= (等しくない)、CDF (カスタム定義関数の場合)の文字列のいずれか。
- tokenString
-
topMbrinHierarchyで指定したメンバーで始まる、アウトラインのメンバーと比較するためのトークン文字列値。
- topMbrinHierarchy
-
メンバー検索のベースにするアウトライン内のメンバーの完全修飾名。指定したメンバーとその別名、およびそのすべての子孫が検索に含まれます。
ノート:
指定したメンバーの別名は検索に含まれますが、メンバー名を比較するときは、アウトライン・メンバー名のみが使用され、別名は使用されません。
アウトライン全体を検索するには、このパラメータに空の文字列(
""
)を指定します。たとえば、@MBRCOMPARE("<=" , "100-10", "")
を考えます。 - cdfName
-
オプション: この引数は、compOperatorに
CDF
が指定されている場合にのみ適用されます。カスタム定義関数の名前。
カスタム定義関数の作成については、MaxL Create Function文を参照してください。
カスタム定義関数は、tokenStringおよびtopMbrinHierarchy引数を取り、ブール値を返します。(@MBRCOMPAREをコンパイルすると、Essbaseはこれらの要件を満たさないカスタム定義関数を拒否します。)関数がTRUEを返す場合、メンバーは@MBRCOMPAREによって返されるメンバー・セットに追加されます。
ノート
カスタム定義関数の次の例は、>= (以上)比較演算子を使用した場合と同様の結果を返します:
package com.hyperion.essbase.cdf.comparecdf;
class MyCDF {
public static boolean JavaNameCompare(String baseStr,
String newStr)
{
try {
System.out.println ("\n COMPARING MEMBER NAMES ..... \n ");
// Compare the two strings.
int result = newStr.compareToIgnoreCase(baseStr);
if (result < 0)
return false;
else if (result == 0)
return true;
else
return true;
}
catch (Exception e) {
System.out.println ("Comparison function failed !!. Exception \n ");
return false;
}
}
カスタム定義関数は、@MBRCOMPARE関数で使用する前に登録する必要があります。
カスタム定義関数を登録するには:
-
カスタム定義関数をJARファイルにコンパイルします。例:
CompareCDF.jar
-
JARファイルを次のディレクトリにコピーします:
$ESSBASEPATH/java/udf
$ESSBASEPATHの場所については、Essbaseプラットフォームの環境変数を参照してください。
-
JARファイルへのアクセス権を付与するには、
$ESSBASEPATH/java/
ディレクトリにあるudf.policy
ファイルの末尾に次の文を追加します:grant codeBase "file:${essbase.java.home}/../java/udf/ CompareCDF.jar" { permission java.security.AllPermission; };
-
カスタム定義関数を登録するには、次のMaxL文を使用します:
CREATE OR REPLACE FUNCTION '@JAVACOMPARE' AS com.hyperion.essbase.cdf.comparecdf.MyCDF.JavaNameCompare(String, String)' SPEC '@ CUSTOMCOMPARE (Str1, Str2)' COMMENT 'Compares Strings returns boolean flag';
例
次の例は、次の重複名アウトラインに基づきます。
Product
100
100–10
100–10–10
100–20
100–30
200
200–10
200–20
200–30
300
300–10
300–20
Diet
100–10
100–10–11
200–10
300–10
Bottle
200–10
300–20
@MBRCOMPARE("<=", "100-10", "Product")
メンバー100、[100].[100-10]、[Diet].[100-10]を返します。
@MBRCOMPARE("==", "100-10", "Product")
メンバー[Diet].[100-10]と[100].[100-10]を返します。
@MBRCOMPARE ("CDF","100-20", "100", @JAVACOMPARE)
@JAVACOMPAREカスタム定義関数を使用してメンバー・セットを返します。