ICubeCreator.CreateCube

Синтаксис Fore

CreateCube(CreateInfo: IMetabaseObjectCreateInfo): IStandardCube;

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

CreateCube(CreateInfo: Prognoz.Platform.Interop.Metabase.IMetabaseObjectCreateInfo): Prognoz.Platform.Interop.Cubes.IStandardCube;

Параметры

CreateInfo. Описание, в соответствии с которым будет создан куб.

Описание

Метод CreateCube осуществляет создание и настройку стандартного куба.

Комментарии

При выполнении метода производятся следующие действия:

Результатом работы метода будет стандартный куб, открытый на редактирование.

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    Rds: IRdsDatabaseInstance;
    CCreator: ICubeCreator;
    Facts: ICubeCreatorFacts;
    Dims: ICubeCreatorDimensions;
    Dim: IDimensionModel;
    CreatorDim1, CreatorDim2: ICubeCreatorDimension;
    CrInfo: IMetabaseObjectCreateInfo;
    TmpCube: IStandardCube;
Begin
    MB := MetabaseClass.Active;
    Rds := MB.ItemById("RDS").Open(NullAs IRdsDatabaseInstance;
    //Создатель куба
    CCreator := New CubeCreator.Create;
    CCreator.RdsDatabase := Rds;
    CCreator.Database := Rds.DatabaseInstance;
    //Коллекция измерений куба
    Dims := CCreator.Dimensions;
    //Новое измерение, для которого будет создан отдельный справочник
    CreatorDim1 := Dims.AddNew("Dim1");
    //Измерение на базе существующего справочника
    Dim := MB.ItemById("CALENDAR").Bind As IDimensionModel;
    CreatorDim2 := Dims.Add(Dim);
    //Индекс блока, по которому осуществляетс привязка к полям таблицы
    CreatorDim2.Index := Dim.Blocks.Item("MONTHS").Indexes.PrimaryIndex;
    //Факты куба
    Facts := CCreator.Facts;
    Facts.Add("Fact1");
    Facts.Add("Fact2");
    //Информация о создаваемом объекте репозитория
    CrInfo := MB.CreateCreateInfo;
    CrInfo.Parent := MB.ItemById("F_CUBES");
    //Создание куба
    TmpCube := CCreator.CreateCube(CrInfo);
    (TmpCube As IMetabaseObject).Save;
End Sub UserProc;

При выполнении примера будет инициализирован создатель кубов. Для создания куба будет сформирована коллекция измерений: одно измерение будет новым (для него в репозитории НСИ будет создан новый табличный справочник НСИ); второе измерение будет создано на базе календарного справочника. В коллекции фактов будет создано два факта. Куб будет создан в указанной папке. При выполнении метода CreateCube также будет сформирована таблица, в которой будут храниться значения фактов. Для данной таблицы будут настроены привязки измерений и фактов.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Rds: IRdsDatabaseInstance;
    CCreator: ICubeCreator;
    Facts: ICubeCreatorFacts;
    Dims: ICubeCreatorDimensions;
    Dim: IDimensionModel;
    CreatorDim1, CreatorDim2: ICubeCreatorDimension;
    CrInfo: IMetabaseObjectCreateInfo;
    TmpCube: IStandardCube;
Begin
    MB := Params.Metabase;
    Rds := MB.ItemById["RDS"].Open(NullAs IRdsDatabaseInstance;
    //Создатель куба
    CCreator := New CubeCreatorClass();
    CCreator.RdsDatabase := Rds;
    CCreator.Database := Rds.DatabaseInstance;
    //Коллекция измерений куба
    Dims := CCreator.Dimensions;
    //Новое измерение, для которого будет создан отдельный справочник
    CreatorDim1 := Dims.AddNew("Dim1");
    //Измерение на базе существующего справочника
    Dim := MB.ItemById["CALENDAR"].Bind() As IDimensionModel;
    CreatorDim2 := Dims.Add(Dim);
    //Индекс блока, по которому осуществляетс привязка к полям таблицы
    CreatorDim2.Index := Dim.Blocks.Item["MONTHS"].Indexes.PrimaryIndex;
    //Факты куба
    Facts := CCreator.Facts;
    Facts.Add("Fact1");
    Facts.Add("Fact2");
    //Информация о создаваемом объекте репозитория
    CrInfo := MB.CreateCreateInfo();
    CrInfo.Parent := MB.ItemById["F_CUBES"];
    //Создание куба
    TmpCube := CCreator.CreateCube(CrInfo);
    (TmpCube As IMetabaseObject).Save();
End Sub;

См. также:

ICubeCreator