@CREATEBLOCK
疎メンバー名または疎メンバーの組合せに対してブロックを作成し、新しく作成されたブロックの密値を#MISSINGに設定します。
他の値を含まない場合など、新しいブロックが不要な場合もあります。 大規模なデータベースで、不要なブロックの作成および処理を行うと、処理時間とストレージ要件が増加します。
この高度な機能は、ボトムアップ計算を使用してパフォーマンスを向上させるのに役立ちます。 これは、ボトムアップ処理中に横断し、その時点でデータを移入できる空のターゲット・ブロックを生成する場合に役立ちます。 これは、ターゲット・ブロックが異なる疎ディメンションの密式の処理中など、計算機によってブロックが自動的に作成されない場合に最も役立ちます。
割当て関数(@ALLOCATEおよび@MDALLOCATE)では必要なターゲット・ブロックも作成されますが、これらの関数は特に値の割当てを目的としています。 @CREATEBLOCKの目的は、データの読取りや書込みを行わずに、ブロックを迅速に作成できるようにすることのみです。
ノート:
-
この関数は、アウトライン・メンバー式ではサポートされていません。
-
DATACOPYの計算コマンドでは、オンデマンドでブロックも作成されます。
構文
@CREATEBLOCK(mbrName|mbrList)
パラメータ
ノート
-
指定したメンバーの組合せのブロックがすでに存在する場合、この関数は何も行いません。
-
mbrName | mbrListは、明示的に指定することも、関数から戻すこともできます。
-
mbrNameがディメンション間メンバーである場合("100-10"->"New York"など)、この関数は指定された組合せのブロックを作成します。
-
計算スクリプトでこの関数を使用する場合は、FIX文内で使用します。たとえば、ブロックを作成するメンバーに対してFIXを使用します。 FIXは必須ではありませんが、FIXを使用すると計算のパフォーマンスが向上する場合があります。
-
この関数をメンバー式で使用すると、式は次のようになります:
@CREATEBLOCK (...)
。 -
この関数は、値を戻しません。かわりに、#MISSING値を使用してデータベースに必要なブロックを作成します。
-
疎ディメンション・メンバーでは、式がトップダウン・モードで実行され、可能性のあるすべてのブロックが作成されます。 ただし、ディメンション・メンバーが密の場合はボトムアップとして実行され、既存のブロックのみに基づいて新しいブロックが作成されます。 したがって、@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は値を戻さないため、現在の処理ブロックの予算メンバーの既存の値は変更されません(最初のノートを参照)。