IMatrixAggregatorModel.Execute

Синтаксис

Execute(DimIndex: Integer; Source: IMatrix): IMatrix;

Параметры

DimIndex. Индекс измерения, по элементам которого, осуществляется агрегация;

Source. Матрица исходных данных, на основании которых, будет осуществляться агрегация.

Описание

Метод Execute осуществляет расчет агрегированных данных.

Пример

Для выполнения примера предполагается наличие в репозитории куба с идентификатором "Cube_1". В структуре куба имеются два измерения. Второе в списке измерение - календарное.

Sub AggregationData;
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Destination: ICubeInstanceDestination;
    Man: IMatrixAggregatorManager;
    Dim: IDimensionModel;
    Lvls: IDimLevels;
    BasicAggr: IBasicMatrixAggregator;
    LevAggr: IBasicMatrixLevelAggregator;
    MatrDS: IMatrixDataSource;
    DimSS: IDimSelectionSet;
    Matr, Matr1: IMatrix;
    Iter, Iter1: IMatrixIterator;
Begin
    MB := MetabaseClass.Active;
    CubeInst := MB.ItemById("Cube_1").Open(NullAs ICubeInstance;
    Destination := CubeInst.Destinations.DefaultDestination;
    //Создаем и настраиваем агрегатор данных
    Man := New MatrixAggregatorManager.Create As IMatrixAggregatorManager;
    BasicAggr := Man.CreateAggregator("BasicMatrixAggregator"As IBasicMatrixAggregator;
    //Второе измерение - календарное
    Dim := Destination.Dimensions.Item(1).Dimension;
    Lvls := Dim.Levels;
    BasicAggr.Dimension := Dim;
    LevAggr := BasicAggr.LevelAggregation(Lvls.Item(Lvls.Count - 2));
    LevAggr.Operation := BasicAggregatorOperation.ActualMean;
    LevAggr.Include(Lvls.Item(Lvls.Count - 1)) := True;
    //Получение исходной матрицы с данными
    MatrDS := Destination As IMatrixDataSource;
    DimSS := MatrDS.CreateDimSelectionSet;
    //Первый элемент в первом измерении
    DimSS.Item(0).SelectElement(0False);
    //Все элементы в календарном измерении
    DimSS.Item(1).SelectAll;
    //Получение исходной матрицы с данными
    Matr := MatrDS.Execute(DimSS);
    //Получение агрегированных данных по календарному измерению
    Matr1 := BasicAggr.Execute(1, Matr);
    //Просмотр результатов
    Iter := Matr.CreateIterator;
    Iter1 := Matr1.CreateIterator;
    Iter.Move(IteratorDirection.First);
    Iter1.Move(IteratorDirection.First);
    Debug.WriteLine("Матрица исходных данных");
    While Iter.Valid Do
        Debug.WriteLine(Iter.Value);
        Iter.Move(IteratorDirection.Next);
    End While;
    Debug.WriteLine("Матрица агрегированных данных");
    While Iter1.Valid Do
        Debug.WriteLine(Iter1.Value);
        Iter1.Move(IteratorDirection.Next);
    End While;
End Sub AggregationData;

После выполнения примера для куба будет создан новый агрегатор данных. Агрегация будет осуществляться по элементам календарного измерения с последнего на предпоследний уровень, с использованием метода фактического среднего. После настройки будет осуществлен расчет агрегированных данных. Исходная матрица и матрица агрегированных данных будут выведены в консоль среды разработки.

См. также:

IMatrixAggregatorModel