非同期次元構築要求を発行します。
非同期データ・ロードおよび次元構築を使用する場合、このプロセス中に次の情報をクエリーできます:
次元構築/データ・ロード・プロセスの状態: 進行中、最終段階または完了済
次元構築/データ・ロード・プロセスの段階: データ・ソースを開いている最中、アウトラインの読取り中、次元の構築中、アウトラインの確認中またはアウトラインの書込み中
現在までに処理されたデータ・レコード数と拒否されたデータ・レコード数
エラー・ファイルの名前および場所
現在までに処理されたデータ・レコードと拒否されたデータ・レコード
構文
ESS_FUNC_M EssAsyncBuildDim(
hCtx, RulesObj, DataObj, MbrUser, bOverwrite, usBuildOption, szTmpOtlFile
)
| パラメータ | データ型 | 説明 |
|---|---|---|
hCtx |
ESS_HCTX_T |
APIコンテキスト・ハンドル。 |
RulesObj |
ESS_POBJDEF_T |
ルール・ファイル・オブジェクト定義構造体へのポインタ。 |
DataObj |
ESS_POBJDEF_T |
データ・ファイル・オブジェクト定義構造体へのポインタ。 |
MbrUser |
ESS_PMBRUSER_T |
SQLユーザー構造体(データ・ソースがSQLデータベースの場合)。 SQLユーザー構造体がNULLの場合は、SQL以外のデータ・ソースを示します。 |
bOverwrite |
ESS_BOOL_T |
ブール。値:
|
usBuildOption |
ESS_USHORT_T |
有効な値:
|
szTmpOtlFile |
ESS_STR_T |
一時アウトライン・ファイルの名前。拡張子またはパスは必要ありません。この回の次元構築で得られたアウトラインにアウトライン確認エラーがある場合、Essbaseは拡張子が.otbの一時アウトライン・ファイルをapp/dbディレクトリに作成します。 |
備考
この関数は、データ・オブジェクトがクライアント上にある場合はエラーを戻します。エラーが戻された場合でも、クライアントとサーバー間のネットワーク接続はアクティブなままです。
接続を閉じるには、EssCloseAsyncProcを呼び出す必要があります。接続を閉じていない場合、サーバー要求ハンドラにより、同じログイン・セッションからの後続の要求がブロックされます。
戻り値
正常終了の場合は0が戻され、失敗した場合はエラー・コードが戻されます。
例
void ESS_AsyncBuildDim()
{
ESS_STS_T sts = 0;
ESS_OBJDEF_T Rules;
ESS_OBJDEF_T Data;
ESS_PMBRUSER_T pMbrUser;
ESS_BOOL_T bOverwrite;
ESS_USHORT_T usBuildOption;
ESS_STR_T szTmpOtlFile;
ESS_STR_T bldDimErrFile;
ESS_STR_T asyncProcErrLog;
ESS_BLDDL_STATE_T procState;
ESS_BOOL_T errFileOverWrite;
szAppName = "Sample";
szDbName = "Basic";
ESS_SetActive();
AddMember("800");
sts = EssBeginIncrementalBuildDim(hCtx);
printf("EssBeginIncrementalBuildDim sts: %ld\n",sts);
memset(&Rules,0,sizeof(ESS_OBJDEF_T));
memset(&Data,0,sizeof(ESS_OBJDEF_T));
Rules.hCtx = hCtx;
Rules.FileName = "apgeibl";
Rules.AppName = szAppName;
Rules.DbName = szDbName;
Rules.ObjType = ESS_OBJTYPE_RULES;
Data.hCtx = hCtx;
Data.AppName = szAppName;
Data.DbName = szDbName;
Data.ObjType = ESS_OBJTYPE_TEXT;
Data.FileName = "apgeibl1";
pMbrUser = ESS_NULL;
bOverwrite = ESS_TRUE;
usBuildOption = ESS_INCDIMBUILD_BUILD;
szTmpOtlFile = "asyncBldTmp";
sts = EssAsyncBuildDim(hCtx, &Rules, &Data, pMbrUser, bOverwrite, usBuildOption, szTmpOtlFile);
printf("EssAsyncBuildDim sts: %ld\n",sts);
sts = EssGetAsyncProcLog (hCtx, ".\\AsyncProc.log", ESS_TRUE);
printf("EssGetAsyncProcLog sts: %ld\n",sts);
sts = EssGetAsyncProcState(hCtx, &procState);
printf("EssGetAsyncProcState sts: %ld\n",sts);
if(!sts)
{
do
{
DisplyProcesStateInfo(procState);
if(procState.ilProcessStatus)
{
sts = EssCancelAsyncProc(hCtx, asyncProcErrLog, errFileOverWrite);
printf("EssCancelAsyncProc sts: %ld\n",sts);
}
else
{
sts = EssGetAsyncProcState(hCtx, &procState);
printf("EssGetAsyncProcState sts: %ld\n",sts);
}
}while(procState.usProcessState != ESS_BLDDL_STATE_DONE);
if(!procState.ilProcessStatus)
{
sts = EssCloseAsyncProc(hCtx, &procState);
printf("EssCloseAsyncProc sts: %ld\n",sts);
}
}
bldDimErrFile = "F:\\testArea\\mainapi\\BldDim.err";
sts = EssEndIncrementalBuildDim(hCtx, ESS_DOR_ALLDATA, szTmpOtlFile, bldDimErrFile, ESS_FALSE);
printf("EssEndIncrementalBuildDim sts: %ld\n",sts);
}
関連トピック