@CREATEBLOCK

Essbaseの@CREATEBLOCK計算関数は、空のターゲット・ブロックを生成します。

この関数は、疎メンバー名または疎メンバーの組合せの1つまたは複数のブロックを作成し、新しく作成されたブロックの密の値を#MISSINGに設定します。

他の値を含まない場合など、新しいブロックが不要な場合もあります。大規模なデータベースで、不要なブロックの作成および処理を行うと、処理時間とストレージ要件が増加します。

この高度なレベルの関数は、ボトムアップ計算を使用してより高速なパフォーマンスを実現するのに役立ちます。これは、ボトムアップ処理中に走査してその時点のデータを入力できる空のターゲット・ブロックを生成するのに役立ちます。これは、ブロックが計算機によって自動的に作成されない状況で最も役立ちます。たとえば、ターゲット・ブロックが異なるスパース・ディメンションからのものである密な式の処理中です。

割当て関数(@ALLOCATE@MDALLOCATE)も必要なターゲット・ブロックを作成しますが、これらの関数は、値を割り当てる目的に特化したものです。@CREATEBLOCKの目的は、データの読取りや書込みを行わずに、迅速なブロック作成を可能にすることのみです。

ノート:

  • この関数は、アウトライン・メンバー式ではサポートされません。

  • DATACOPY計算コマンドも、オンデマンドでブロックを作成します。

構文

@CREATEBLOCK(mbrName|mbrList)

パラメータ

mbrName

任意の単一のスパース・メンバー名、スパース・メンバーの組合せ、または単一メンバー、メンバー・リスト、メンバーの組合せを返す関数。例:

  • 単一メンバー名: ["200-20"]

  • スパース・メンバーの組合せ: ["100-10"->"New York"]

  • mbrNameまたはmbrListを返すMember関数: @ANCESTORS("New York")

ノート

  • 指定したメンバーの組合せのブロックがすでに存在する場合、この関数は何もしません。

  • mbrName|mbrListは、明示的に指定することも、関数から返すこともできます。

  • mbrNameがディメンション間メンバー("100-10"->"New York"など)の場合、この関数は指定された組合せのブロックを作成します。

  • この関数を計算スクリプト内で使用する場合は、FIX文内で使用します。たとえば、ブロックの作成対象のメンバーに対して実行するFIXです。FIXは必須ではありませんが、FIXを使用すると計算パフォーマンスが向上する場合があります。

  • この関数をメンバー式で使用する場合、式は@CREATEBLOCK (...)のようになります。

  • この関数は値を返さず、#MISSING値を使用してデータベース内に必要なブロックを作成します。

  • スパース・ディメンション・メンバーでは、@CALCMODE(BOTTOMUP)のない数式はトップダウン・モードで実行され、可能なすべてのブロックが作成されます。ただし、ディメンション・メンバーが密である場合は、ボトムアップとして実行され、既存のブロックのみに基づいて新しいブロックが作成されます。したがって、@CREATEBLOCKは、空のキューブには密なブロックを作成しません。

  • トップダウンおよびボトムアップ処理の詳細は、@CALCMODEを参照してください。

次の計算スクリプトの例では、Sample.Basicデータベースを使用していますが、100-10およびNew Yorkブロックのみがロードされていることを前提としています。Salesのメンバー式は@CREATEBLOCK("100")です。


/* Calling @CREATEBLOCK inside member formula (Sales) */
FIX("100-10", "New York")
   "Sales" (
         @CREATEBLOCK ("100");
     )
ENDFIX

スクリプトは、FIX…ENDFIX文に一致するすべての可能なスパース・ブロックを作成します。この場合、ブロック"100"->"New York"のみが作成されます。

次の計算スクリプトの例では、@CREATEBLOCKはどのメンバー式でも使用されていないため、mbrName =を使用してスクリプト内で割り当てる必要があります。


/* Calling @CREATEBLOCK outside member formula */
Budget = @CREATEBLOCK ("100");

@CREATEBLOCKは値を返さないため(最初の「ノート」を参照)、現在処理中のブロックのBudgetメンバーの既存の値は変更されません。