EssLoadBufferTerm

EssLoadBufferInitによって割り当てられた一時的なデータロード・メモリー・バッファを破棄し、データを集約ストレージ・データベースにロードします。オプションで、データを先にコミットすることも可能です。

集約ストレージ・データベースにのみ適用されます。

構文

            ESS_FUNC_M EssLoadBufferTerm (
            hCtx, AppName, DbName, ulBufferCnt, *ulBufferIdAry, ulCommitType, 
ulActionType, ulOptions
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

APIコンテキスト・ハンドル。

AppName

ESS_STR_T

アプリケーション名。

DbName

ESS_STR_T

データベースの名前。

ulBufferCnt

ESS_ULONG_T

リスト内のバッファ数。

*ulBufferIdAry

ESS_ULONG_T

この操作で影響を受けるバッファIDの配列。

ulCommitType

ESS_ULONG_T

次のいずれかの定数を使用して、バッファに格納されている値を、すでにデータベースに格納されている値と組み合せます:

  • ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA: データベース内の既存のセル値を、ロード・バッファからの新しい値で置き換えます。データベース内のセルで、バッファに対応する値がないものは更新されません。

                            #define ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA   0
                         
  • ESS_ASO_DATA_LOAD_BUFFER_ADD_DATA: 既存の値に新しい値を追加します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_ADD_DATA   1
                         
  • ESS_ASO_DATA_LOAD_BUFFER_SUBTRACT_DATA: 既存の値から新しい値を削除します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_SUBTRACT_DATA   2
                         
  • ESS_ASO_DATA_LOAD_BUFFER_OVERRIDE_ALL_DATA: データベース内の既存のデータ・セル(データベース内のセルで、ロード・バッファに対応する値がないものも含む)をすべて破棄し、1回の操作でロード・バッファのコンテンツをロードします。

                            #define ESS_ASO_DATA_LOAD_BUFFER_OVERRIDE_ALL_DATA   3
                         

    すべてのデータを上書きするオプションを使用する際は、ulOptions設定は無視されます。Essbaseでは、現在バッファに格納されているデータは、データベースのメイン・スライスに書き込まれます。

  • ESS_ASO_DATA_LOAD_BUFFER_OVERRIDE_INCREMENTAL_DATA: 現在任意の増分スライスに格納されているすべてのデータ・セルを破棄し、ロード・バッファのコンテンツをロードします。

                            #define ESS_ASO_DATA_LOAD_BUFFER_OVERRIDE_INCREMENTAL_DATA   4
                         

    増分データを上書きするオプションを使用する際に、ulOptions設定がメイン・スライスである場合、EssbaseではulOptions設定が無視され、現在バッファに格納されているデータは、データベースの新規スライスに書き込まれます。

複数のバッファをコミットする場合、このulCommitType設定やバッファ自体の構成方法とは関係なく、異なるバッファからの値は常に追加操作を使用して結合されます。

注:

ulActionType設定が中止の場合、ulCommitType設定は無視されます。

ulActionType

ESS_ULONG_T

次の定数のいずれかになります:

  • ESS_ASO_DATA_LOAD_BUFFER_COMMIT: データがロード・バッファからデータベースにロードされます; その後、バッファが破棄されます。

                            #define ESS_ASO_DATA_LOAD_BUFFER_COMMIT   1
                         
  • ESS_ASO_DATA_LOAD_BUFFER_ABORT: ロード・バッファが破棄されます。バッファ内のすべてのデータが失われます。

                            #define ESS_ASO_DATA_LOAD_BUFFER_ABORT   2
                         

    中止オプションを使用すると、ulCommitTypeおよびulOptions設定が無視されます

ulOptions

ESS_ULONG_T

次の定数のいずれかになります:

  • ESS_ASO_DATA_LOAD_INCR_TO_MAIN_SLICE: 現在バッファに格納されているデータが、データベースのメイン・スライスに書き込まれます。

                            #define ESS_ASO_DATA_LOAD_INCR_TO_MAIN_SLICE   0
                         

    メイン・スライスへの追加オプションを使用する際に、ulCommitTypeが増分データを上書きするように設定されている場合、EssbaseではulOptions設定が無視され、現在バッファに格納されているデータが、データベースの新規スライスに書き込まれます。

  • ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE: 現在バッファに格納されているデータが、データベースの新規スライスに書き込まれます。この操作により、データのロード速度が速くなります。

                            #define ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE   1
                         
  • ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE_LIGHTWEIGHT: 現在バッファに格納されているデータが、軽量操作として、データベースの新規スライスに書き込まれます。このオプションは、最大1,000のセルまでの同時に発生する小規模なデータ・ロード(グリッド・クライアントのデータ更新操作など)用です。

                            #define ESS_ASO_DATA_LOAD_INCR_TO_NEW_SLICE_LIGHTWEIGHT   2
                         

注:

ulCommitTypeがすべてのデータを上書きするように設定されている場合、ulOptions設定は無視されます。Essbaseでは、現在バッファに格納されているデータは、データベースのメイン・スライスに書き込まれます。ulActionType設定が中止の場合、ulOptions設定は無視されます

備考

この関数は指定されたロード・バッファ(通常は単一のロード・バッファ)を破棄します。指定されたアクション・タイプが"コミット"の場合は、バッファの破棄前に、バッファ内に現在保管されているデータがデータベースに適用されます。

戻り値

正常終了の場合は0が戻され、それ以外の場合はエラー・コードが戻されます。

         void TestBeginDataloadASO(ESS_HCTX_T hCtx, ESS_STR_T AppName, ESS_STR_T DbName)
{
        ESS_STS_T       sts = ESS_STS_NOERR;
        ESS_BOOL_T      Store;
        ESS_BOOL_T      Unlock; 
        ESS_BOOL_T      abortOnError;
        ESS_STR_T       loadString;
        ESS_OBJDEF_T rulesFile; 
        ESS_PMBRERR_T pMbrErr;
        ESS_ULONG_T ulBufferId;
        ESS_ULONG_T     ulDuplicateAggregationMethod;
        ESS_ULONG_T     ulOptionsFlags;
        ESS_ULONG_T     ulSize;
        ESS_ULONG_T     ulBufferCnt;
        ESS_ULONG_T     ulCommitType ;
        ESS_ULONG_T     ulActionType;
        ESS_ULONG_T     ulOptions;
        ESS_ULONG_T ulBufferIdAry[1];

        /* EssLoadBufferInit */
        ulDuplicateAggregationMethod = ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD;
        ulOptionsFlags = ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES;
        ulSize = 100;
        ulBufferId = 201;
        sts = EssLoadBufferInit(hCtx, AppName, DbName, ulBufferId, ulDuplicateAggregationMethod, 
                ulOptionsFlags, ulSize);
        printf("EssLoadBufferInit sts: %ld\n", sts);

        /* EssBeginDataloadASO, EssSendString, EssEndDataload */
        Store  = ESS_TRUE;
        Unlock = ESS_FALSE;
        abortOnError = ESS_FALSE;
        loadString = "Mar Sale \"Curr Year\" \"Original Price\" \"017589\" \"13668\" Cash \"No Promotion\" \"1 to 13 Years\" \"Under 20,000\" \"Digital Cameras\" 111";                   
        sts = EssBeginDataloadASO (hCtx, Store, Unlock, abortOnError, ESS_NULL, ulBufferId);  
        printf("EssBeginDataloadASO sts: %ld\n",sts);
        sts = EssSendString(hCtx, loadString);
        printf("EssSendString sts: %ld\n",sts);
        sts = EssEndDataload(hCtx, &pMbrErr);
        printf("EssEndDataload sts: %ld\n",sts);

        /* EssLoadBufferTerm */
        ulBufferCnt = 1;
        ulBufferIdAry[0] = ulBufferId;
        ulCommitType = ESS_ASO_DATA_LOAD_BUFFER_STORE_DATA;
        ulActionType = ESS_ASO_DATA_LOAD_BUFFER_COMMIT;
        printf("\Commit data to main slice and destroy buffer:\n");
        ulOptions = ESS_ASO_DATA_LOAD_INCR_TO_MAIN_SLICE;
        sts = EssLoadBufferTerm(hCtx, AppName, DbName, ulBufferCnt, ulBufferIdAry, ulCommitType,
                ulActionType, ulOptions);
        printf("EssLoadBufferTerm sts: %ld\n",sts);

}
      

関連トピック