ICubeCreator.EditCube

Синтаксис Fore

EditCube(Cube: IStandardCube);

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

EditCube(Cube: Prognoz.Platform.Interop.Cubes.IStandardCube);

Параметры

Cube. Куб, структуру которого необходимо отредактировать.

Описание

Метод EditCube изменяет структуру указанного куба в соответствии с заданными настройками текущего объекта.

Комментарии

При выполнении метода структура указанного куба будет изменена в соответствии набором измерений и фактов, которые указаны в свойствах ICubeCreator.Dimensions и ICubeCreator.Facts соответственно. Если в кубе использовалось локальное измерение фактов, то оно будет сброшено. Для измерения фактов будет создан новый табличный справочник НСИ.

Важно. При изменении структуры существующего куба также будет изменена структура таблицы, в которой хранятся данные куба. Все старые данные при этом будут удалены.

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    CCreator: ICubeCreator;
    Facts: ICubeCreatorFacts;
    Dims: ICubeCreatorDimensions;
    Dim: IDimensionModel;
    CreatorDim1, CreatorDim2: ICubeCreatorDimension;
Begin
    MB := MetabaseClass.Active;
    //Создатель куба
    CCreator := New CubeCreator.Create;
    CCreator.Database := MB.ItemById("DB").Open(NullAs IDatabaseInstance;
    //Коллекция измерений куба
    Dims := CCreator.Dimensions;
    //Новое измерение, для которого будет создан отдельный справочник
    CreatorDim1 := Dims.AddNew("Country");
    //Измерение на базе существующего справочника
    Dim := MB.ItemById("CALENDAR").Bind As IDimensionModel;
    CreatorDim2 := Dims.Add(Dim);
    //Индекс блока, по которому осуществляетс привязка к полям таблицы
    CreatorDim2.Index := Dim.Blocks.Item("YEARS").Indexes.PrimaryIndex;
    //Факты куба
    Facts := CCreator.Facts;
    Facts.Add("Значение");
    //Редактирование куба
    CCreator.EditCube(MB.ItemById("STD_CUBE").Bind As IStandardCube);
End Sub UserProc;

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

Пример Fore.NET

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

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

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CCreator: ICubeCreator = New CubeCreator();
    Facts: ICubeCreatorFacts;
    Dims: ICubeCreatorDimensions;
    Dim: IDimensionModel;
    CreatorDim1, CreatorDim2: ICubeCreatorDimension;
Begin
    MB := Params.Metabase;
    //Создатель куба
    CCreator.Database := MB.ItemById["DB"].Open(NullAs IDatabaseInstance;
    //Коллекция измерений куба
    Dims := CCreator.Dimensions;
    //Новое измерение, для которого будет создан отдельный справочник
    CreatorDim1 := Dims.AddNew("Country");
    //Измерение на базе существующего справочника
    Dim := MB.ItemById["CALENDAR"].Bind() As IDimensionModel;
    CreatorDim2 := Dims.Add(Dim);
    //Индекс блока, по которому осуществляетс привязка к полям таблицы
    CreatorDim2.Index := Dim.Blocks.Item["YEARS"].Indexes.PrimaryIndex;
    //Факты куба
    Facts := CCreator.Facts;
    Facts.Add("Значение");
    //Редактирование куба
    CCreator.EditCube(MB.ItemById["STD_CUBE"].Bind() As IStandardCube);
End Sub;

См. также:

ICubeCreator