@MBRCOMPARE

Essbaseの@MBRCOMPARE計算関数は、比較条件に一致するメンバー名のセットを返します。メンバー名はアルファベット順に評価されます。この関数は、一意の重複した名前のアウトラインで使用できます。

構文

@MBRCOMPARE (compOperator, tokenString, topMbrinHierarchy, cdfName)

パラメータ

compOperator

< (未満)、<= (以下)、> (大なり)、>= (以上)、== (等しい)、!= (等しくない)、CDF (カスタム定義関数の場合)の文字列のいずれか。

ノート:

== (等しい)比較演算子を使用することは、@EQUALを使用することと同じです。!= (等しくない)比較演算子を使用することは、@NOTEQUALを使用することと同じです。

tokenString

topMbrinHierarchyで指定したメンバーで始まる、アウトラインのメンバーと比較するためのトークン文字列値。

topMbrinHierarchy

メンバー検索のベースにするアウトライン内のメンバーの完全修飾名。指定したメンバーとその別名、およびそのすべての子孫が検索に含まれます。

ノート:

指定したメンバーの別名は検索に含まれますが、メンバー名を比較するときは、アウトライン・メンバー名のみが使用され、別名は使用されません。

アウトライン全体を検索するには、このパラメータに空の文字列("")を指定します。たとえば、@MBRCOMPARE("<=" , "100-10", "")を考えます。

cdfName

オプション: この引数は、compOperatorCDFが指定されている場合にのみ適用されます。

カスタム定義関数の名前。

カスタム定義関数の作成については、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関数で使用する前に登録する必要があります。

カスタム定義関数を登録するには:

  1. カスタム定義関数をJARファイルにコンパイルします。例:

    CompareCDF.jar
  2. JARファイルを次のディレクトリにコピーします:

    $ESSBASEPATH/java/udf

    $ESSBASEPATHの場所については、Essbaseプラットフォームの環境変数を参照してください。

  3. JARファイルへのアクセス権を付与するには、$ESSBASEPATH/java/ディレクトリにあるudf.policyファイルの末尾に次の文を追加します:

    grant codeBase "file:${essbase.java.home}/../java/udf/ CompareCDF.jar" {
    permission java.security.AllPermission;
    };
    
  4. カスタム定義関数を登録するには、次の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カスタム定義関数を使用してメンバー・セットを返します。