一時的なデータ・ロード・バッファを作成し、集約ストレージ・データベースへのデータ・ロード中にタプルの一時記憶領域を提供します。集約ストレージ・データベースにのみ適用されます。
構文
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 |
バッファ内の同じセルに対する複数の値を組み合せる定数を次に示します:
|
||
ulOptionFlags |
ESS_ULONG_T |
次のロード・バッファ・オプションのうち、1つ以上:
ビット単位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);
}
関連トピック