ICubeInstanceDestinationExecutor.PerformExecuteO

Синтаксис

PerformExecuteO(Options: Integer): Boolean;

PerformExecuteO(Options: Integer): Boolean;

Параметры

Options. Параметры расчёта куба.

Описание

Метод PerformExecuteO осуществляет расчёт куба в заданном режиме.

Комментарии

Если расчёт результирующей матрицы куба осуществляется на базе кэшированных данных (Options = CubeInstanceDestinationExecutorOptions.Cached), то дальнейшая работа с полученными данными должна осуществляться с использованием блокировок чтения/изменения данных на прикладном уровне. Для использования блокировок приведите полученную матрицу Matrix к интерфейсу IRWMutex и используйте его методы для включения/отключения необходимой блокировки.

Пример

Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «FC_RUBRICATOR». В данной базе должен присутствовать уникальный атрибут, ссылающийся на справочник с идентификатором «DICT_IND», расположенный в репозитории НСИ с идентификатором «RDS_REPO».

Sub UserProc;
Var
    MB: IMetabase;
    RubDesc: IMetabaseObjectDescriptor;
    RubrIn: IRubricatorInstance;
    Cub: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    DictDescr: IMetabaseObjectDescriptor;
    DictInst: IDimInstance;
    Exec: ICubeInstanceDestinationExecutor;
    Mat: IMatrix;
    Iter: IMatrixIterator;
Begin
    MB := MetabaseClass.Active;
    RubDesc := MB.ItemById("FC_RUBRICATOR");
    RubrIn := RubDesc.Open(NullAs IRubricatorInstance;
    Cub := RubrIn As ICubeInstance;
    Dest := Cub.Destinations.DefaultDestination;
    Sels := Dest.CreateDimSelectionSet;
    Sels.Clear;
    Sel := Sels.Add(RubrIn.CalendarLevelsDimension);
    Sel.SelectAll;
    DictDescr := MB.ItemByIdNamespace("DICT_IND", MB.ItemById("RDS_REPO").Key);
    DictInst := DictDescr.Open(NullAs IDimInstance;
    Sel := Sels.Add(DictInst);
    Sel.SelectElement(0False);
    Exec := Dest.CreateExecutor;
    Exec.ScenarioKey := -1;
    Exec.PrepareExecute(Sels);
    Exec.PerformExecuteO(CubeInstanceDestinationExecutorOptions.Reload);
    Mat := Exec.Matrix;
    Iter := Mat.CreateIterator;
    Iter.Move(IteratorDirection.First);
    While Iter.Valid Do
        Debug.WriteLine(Iter.Value);
        Iter.Move(IteratorDirection.Next);
    End While;
End Sub UserProc;

Imports Prognoz.Platform.Interop.Metabase;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.ForeSystem;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    RubDesc: IMetabaseObjectDescriptor;
    RubrIn: IRubricatorInstance;
    Cub: ICubeInstance;
    Dest: ICubeInstanceDestination;
    Sels: IDimSelectionSet;
    Sel: IDimSelection;
    DictDescr: IMetabaseObjectDescriptor;
    DictInst: IDimInstance;
    Exec: ICubeInstanceDestinationExecutor;
    Mat: IMatrix;
    Iter: IMatrixIterator;
Begin
    MB := Self.Metabase;
    RubDesc := MB.ItemById["FC_RUBRICATOR"];
    RubrIn := RubDesc.Open(NullAs IRubricatorInstance;
    Cub := RubrIn As ICubeInstance;
    Dest := Cub.Destinations.DefaultDestination;
    Sels := Dest.CreateDimSelectionSet();
    Sels.Clear();
    Sel := Sels.Add(RubrIn.CalendarLevelsDimension);
    Sel.SelectAll();
    DictDescr := MB.ItemByIdNamespace["DICT_IND", MB.ItemById["RDS_REPO"].Key];
    DictInst := DictDescr.Open(NullAs IDimInstance;
    Sel := Sels.Add(DictInst);
    Sel.SelectElement(0False);
    Exec := Dest.CreateExecutor();
    Exec.ScenarioKey := UInteger.MaxValue;
    Exec.PrepareExecute(Sels);
    Exec.PerformExecuteO(CubeInstanceDestinationExecutorOptions.cideoReload As Integer);
    Mat := Exec.Matrix;
    Iter := Mat.CreateIterator();
    Iter.Move(IteratorDirection.itdFirst);
    While Iter.Valid Do
        System.Diagnostics.Debug.WriteLine(Iter.Value);
        Iter.Move(IteratorDirection.itdNext);
    End While;
End Sub;

При выполнении примера данные базы данных временных рядов будут представлены как данные отстроенного куба. При этом кэш данных объекта будет перечитан и перезагружен из базы данных, после чего произведётся расчёт и полученные данные будут выведены в окно консоли.

См. также:

ICubeInstanceDestinationExecutor