EssLoadBufferInit

一時的なデータ・ロード・バッファを作成し、集約ストレージ・データベースへのデータ・ロード中にタプルの一時記憶領域を提供します。集約ストレージ・データベースにのみ適用されます。

構文

            ESS_FUNC_M EssLoadBufferInit (
            hCtx, AppName, DbName, ulBufferId, ulDuplicateAggregationMethod, 
ulOptionFlags, ulSize
            );
         
パラメータデータ型説明

hCtx

ESS_HCTX_T

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

AppName

ESS_STR_T

ロード・バッファを作成するアプリケーション名。

DbName

ESS_STR_T

ロード・バッファを作成するデータベース名。

ulBufferId

ESS_ULONG_T

データ・ロード・バッファのID番号(1から999,999までの数値)。IDがすでに使用されている場合、操作は失敗します。

ulDuplicateAggregationMethod

ESS_ULONG_T

バッファ内の同じセルに対する複数の値を組み合せる定数を次に示します:

  • ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD: バッファが同じセルに対する複数の値を含んでいる場合に値を追加します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ADD   0
                         
  • ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ASSUME_EQUAL: 同じセルに対する複数の値が同一であることを確認します; 同一である場合、重複を無視します。同じセルに対する値が異なる場合は、エラー・メッセージを表示してデータ・ロードを停止します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_ASSUME_EQUAL   1
                         
  • ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_USE_LAST: ロード・バッファに最後にロードされたセルの値を使用することで、重複するセルを組み合せます。このオプションは、比較的小規模な、最大10,000までのセル・データのロード用です。

                            #define ESS_ASO_DATA_LOAD_BUFFER_DUPLICATES_USE_LAST   2
                         

    use_lastオプションでデータ・ロード・バッファを使用する場合、データ・ロードは重複した値がなくても著しく遅くなります。

    注意

    use_lastメソッドは、パフォーマンスに重大な影響を及ぼすため、大量のデータ・ロード向きではありません。データ・ロードが100万セルを超える場合、数値データを(型付きメジャー・データとは)別のデータ・ロード・プロセスに分けることを検討してください。この個別データ・ロードでは、かわりにaddメソッドを使用できます。

ulOptionFlags

ESS_ULONG_T

次のロード・バッファ・オプションのうち、1つ以上:

  • ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES: 入力データ・ストリーム内の#MISSING値を無視します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES   0x00000001
                         
  • ESS_ASO_DATA_LOAD_BUFFER_IGNORE_ZERO_VALUES: 入力データ・ストリーム内のゼロを無視します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_IGNORE_ZERO_VALUES   0x00000002
                         
  • ESS_ASO_DATA_LOAD_BUFFER_WAIT_FOR_RESOURCES: ロード・バッファ操作を実行するには、リソースが使用可能になるまで、essbase.cfgのASOLOADBUFFERWAIT構成設定で指定された期間待機するよう、Essbaseに指示します。

                            #define ESS_ASO_DATA_LOAD_BUFFER_WAIT_FOR_RESOURCES   0x00000004
                         

ビット単位OR(|)を使用して、ulOptionsを複数指定します; 次に例を示します:

                  ESS_ASO_DATA_LOAD_BUFFER_IGNORE_MISSING_VALUES | ESS_ASO_DATA_LOAD_BUFFER_IGNORE_ZERO_VALUES
               

ulSize

ESS_ULONG_T

このロード・バッファが使用できるロード・バッファ・リソースのパーセンテージ。可能な値: 0-100。

値が0の場合、Essbaseでは、自ら決定したデフォルトのロード・バッファ・サイズが使用されます。

全ロード・バッファの合計サイズが100を超えると、操作は失敗します。

備考

複数のバッファが単一の集約ストレージ・データベースに存在できます; ただし、指定したロード・バッファを一度に使用できるのは、1つのデータ・ロードのみです。

戻り値

正常終了の場合は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);

}
      

関連トピック