GetGlobalCache(
DestKey: Integer;
ParamValues: IMetabaseObjectParamValues;
Selections: IDimSelectionSet): IMatrix;
GetGlobalCache(
DestKey: UInteger;
ParamValues: Prognoz.Platform.Interop.Metabase.IMetabaseObjectParamValues;
Selections: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet): Prognoz.Platform.Interop.Matrix.IMatrix;
DestKey. Ключ необходимого варианта отображения куба.
ParamValues. Набор значений параметров, для которых сохранен объект кэширования.
Selections. Коллекция отметок в указанном варианте отображения куба.
Метод GetGlobalCache возвращает матрицу данных куба, полученную из кэша в соответствии с передаваемыми параметрами кэширования куба.
Метод работает также, как и метод FindAndLoadCache, но не возвращает признак удачного поиска. Если в кэше имеются данные в соответствии с указанными параметрами, то метод GetGlobalCache вернет их в виде матрицы. Если данные отсутствуют, то метод вернет значение Null.
Для выполнения примера предполагается наличие в репозитории куба с идентификатором «D_SEP». Для куба включена возможность кэширования данных.
Sub UserProc;
Var
MB: IMetabase;
MDesc, CacheDesc: IMetabaseObjectDescriptor;
Cache: ICubeCacheSaver;
CubeInst: ICubeInstance;
Dest: ICubeInstanceDestination;
Sels: IDimSelectionSet;
Sel: IDimSelection;
Matr: IMatrix;
Begin
MB := MetabaseClass.Active;
MDesc := MB.ItemById("D_SEP");
CacheDesc := GetCache(MDesc);
If CacheDesc <> Null Then
Cache := CacheDesc.Edit As ICubeCacheSaver;
CubeInst := MDesc.Open(Null) As ICubeInstance;
Dest := CubeInst.Destinations.DefaultDestination;
Sels := Dest.CreateDimSelectionSet;
For Each Sel In Sels Do
Sel.SelectAll;
End For;
//Получение кэшированной матрицы с данными
Matr := Cache.GetGlobalCache(Dest.Key, Null, Sels);
If Matr <> Null Then
//Дальнейшая работа с матрицей данных
End If;
End If;
End Sub UserProc;
Function GetCache(MObj: IMetabaseObjectDescriptor): IMetabaseObjectDescriptor;
Var
Desc: IMetabaseObjectDescriptor;
Begin
For Each Desc In MObj.Children Do
If Desc.ClassId = MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER Then
Return Desc;
End If;
End For;
Return Null;
End Function GetCache;
При выполнении примера для указанных параметров куба будет получена матрица кэшированных данных.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
MB: IMetabase;
MDesc, CacheDesc: IMetabaseObjectDescriptor;
Cache: ICubeCacheSaver;
CubeInst: ICubeInstance;
Dest: ICubeInstanceDestination;
Sels: IDimSelectionSet;
Sel: IDimSelection;
Matr: IMatrix;
Begin
MB := Params.Metabase;
MDesc := MB.ItemById["D_SEP"];
CacheDesc := GetCache(MDesc);
If CacheDesc <> Null Then
Cache := CacheDesc.Edit() As ICubeCacheSaver;
CubeInst := MDesc.Open(Null) As ICubeInstance;
Dest := CubeInst.Destinations.DefaultDestination;
Sels := Dest.CreateDimSelectionSet();
For Each Sel In Sels Do
Sel.SelectAll();
//Sel.SelectElement(0, False);
End For;
//Получение кэшированной матрицы с данными
Matr := Cache.GetGlobalCache(Dest.Key, Null, Sels);
If Matr <> Null Then
//Дальнейшая работа с матрицей данных
End If;
End If;
End Sub;
Public Shared Function GetCache(MObj: IMetabaseObjectDescriptor): IMetabaseObjectDescriptor;
Var
Desc: IMetabaseObjectDescriptor;
Begin
For Each Desc In MObj.Children Do
If Desc.ClassId = MetabaseObjectClass.KE_CLASS_CUBE_CACHE_SAVER As integer Then
Return Desc;
End If;
End For;
Return Null;
End Function;
См. также: