IMatrixAggregatorModel.Execute

Синтаксис Fore

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

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

Execute(DimIndex: Integer; Source: Prognoz.Platform.Interop.Matrix.IMatrix): Prognoz.Platform.Interop.Matrix.IMatrix;

Параметры

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

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

Описание

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

Пример Fore

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

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

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Destination: ICubeInstanceDestination;
    Man: MatrixAggregatorManager = New MatrixAggregatorManagerClass();
    Dim: IDimensionModel;
    Lvls: IDimLevels;
    BasicAggr: IBasicMatrixAggregator;
    LevAggr: IBasicMatrixLevelAggregator;
    MatrDS: IMatrixDataSource;
    DimSS: IDimSelectionSet;
    Matr, Matr1: IMatrix;
    Iter, Iter1: IMatrixIterator;
Begin
    MB := Params.Metabase;
    CubeInst := MB.ItemById["Cube_1"].Open(NullAs ICubeInstance;
    Destination := CubeInst.Destinations.DefaultDestination;
    //Настраиваем агрегатор данных
    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.baoActualMean;
    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.itdFirst);
    Iter1.Move(IteratorDirection.itdFirst);
    System.Diagnostics.Debug.WriteLine("Матрица исходных данных");
    While Iter.Valid Do
        System.Diagnostics.Debug.WriteLine(Iter.Value);
        Iter.Move(IteratorDirection.itdNext);
    End While;
    System.Diagnostics.Debug.WriteLine("Матрица агрегированных данных");
    While Iter1.Valid Do
        System.Diagnostics.Debug.WriteLine(Iter1.Value);
        Iter1.Move(IteratorDirection.itdNext);
    End While;
End Sub;

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

См.также:

IMatrixAggregatorModel