Создание вычисляемого куба

Рассмотрим пример создания вычисляемого куба с использованием языка Fore/Fore.NET. Для создания куба необходимо наличие в репозитории следующих объектов:

  1. Какой-либо куб с идентификатором «CUBE_SOURCE», который будет выступать в качестве источника данных для создаваемого вычисляемого куба;

  2. Данный куб должен содержать в своей структуре календарное измерение с идентификатором «CALENDAR».

Указанный ниже пример создает в корневой папке репозитория новый объект - Вычисляемый куб и производит настройку его параметров:

Для выполнения примеров добавьте ссылки на системные сборки: Cubes, Dimensions, Metabase. Для Fore.NET пример также пропишите соответствующие строки Imports.

Пример Fore

Sub CreateCalculatedCube;
Var
    MB: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    CalcCube: ICalculatedCube;
    CubeModel: ICubeModel;
    CubeDest: ICubeModelDestination;
    CalcSource: ICalculatedCubeSource;
    SourceDim, CalcDim: ICalculatedCubeDimension;
Begin
    MB := MetabaseClass.Active;
    CrInfo := MB.CreateCreateInfo;
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_CALCCUBE;
    CrInfo.Id := "New_Calc_Cube";
    CrInfo.Name := "Новый вычисляемый куб";
    CrInfo.Parent := MB.Root;
    MObj := MB.CreateObject(CrInfo).Edit;
    CalcCube := MObj As ICalculatedCube;
    //Добавление источника, на базе значений которого будут производиться вычисления по формулам
    CubeModel := Mb.ItemById("CUBE_SOURCE").Bind As ICubeModel;
    CubeDest := CubeModel.Destinations.DefaultDestination;
    CalcSource := CalcCube.Sources.Add(CubeDest);
    //Добавляем измерения куба-источника в структуру вычисляемого куба
    For Each SourceDim In CalcSource.Dimensions Do
        CalcDim := CalcCube.Dimensions.Add(SourceDim.Dimension);
        If (SourceDim.Dimension As IMetabaseObject).Id = "CALENDAR" Then
            SourceDim.Fixed := True;
            CalcDim.Fixed := True;
        End If;
    End For;
    MObj.Save;
End Sub CreateCalculatedCube;

Пример Fore.NET

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

Sub CreateCalculatedCube(MB: IMetabase);
Var
    CrInfo: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    CalcCube: ICalculatedCube;
    CubeModel: ICubeModel;
    CubeDest: ICubeModelDestination;
    CalcSource: ICalculatedCubeSource;
    SourceDim, CalcDim: ICalculatedCubeDimension;
Begin
    CrInfo := MB.CreateCreateInfo();
    CrInfo.ClassID := MetabaseObjectClass.KE_CLASS_CALCCUBE As Integer;
    CrInfo.Id := "New_Calc_Cube";
    CrInfo.Name := "Новый вычисляемый куб";
    CrInfo.Parent := MB.Root;
    MObj := MB.CreateObject(CrInfo).Edit();
    CalcCube := MObj As ICalculatedCube;
    //Добавление источника, на базе значений которого будут производиться вычисления по формулам
    CubeModel := Mb.ItemById["CUBE_SOURCE"].Bind() As ICubeModel;
    CubeDest := CubeModel.Destinations.DefaultDestination;
    CalcSource := CalcCube.Sources.Add(CubeDest);
    //Добавляем измерения куба-источника в структуру вычисляемого куба
    For Each SourceDim In CalcSource.Dimensions Do
        CalcDim := CalcCube.Dimensions.Add(SourceDim.Dimension);
        If (SourceDim.Dimension As IMetabaseObject).Id = "CALENDAR" Then
            SourceDim.Fixed := True;
            CalcDim.Fixed := True;
        End If;
    End For;
    MObj.Save();
End Sub;

См. также:

Примеры