ICubeCacheSaver.GetGlobalCache

Синтаксис Fore

GetGlobalCache(

DestKey: Integer;

ParamValues: IMetabaseObjectParamValues;

Selections: IDimSelectionSet): IMatrix;

Синтаксис Fore.NET

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.

Пример Fore

Для выполнения примера предполагается наличие в репозитории куба с идентификатором «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(NullAs 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.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(NullAs 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;

См. также:

ICubeCacheSaver