ICubeLoaderFromSource.EditExistingObject

Синтаксис Fore

EditExistingObject: Boolean;

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

EditExistingObject: Boolean;

Описание

Свойство EditExistingObject определяет признак редактирования структуры объекта, в который осуществляется загрузка данных.

Комментарии

Если свойству установлено значение True, то перед загрузкой данных будет отредактирована структура указанного куба/базы данных временных рядов. Редактирование осуществляется в соответствии с заданными параметрами привязки измерений и фактов. Для возможности редактирования должны быть соблюдены следующие условия: куб должен быть стандартным, измерения куба должны быть построены на табличных справочниках НСИ или календаре.

Если свойству установлено значение False, то редактирование структуры не осуществляется. Для корректной загрузки данных должны быть заданы корректные привязки в свойствах DimensionBindings и FactBindings.

Пример Fore

Для выполнения примера предполагается наличие файла «C:\Data.xls», в файле имеются какие-либо данные по странам. Данные располагаются в столбцах с наименованиями «Country Name», «Date» и «Value», а также в каких-либо других полях. В репозитории имеется стандартный куб с идентификатором «STD_CUBE», построенный на табличных справочниках НСИ и календаре.

Sub UserProc;
Var
    MB: IMetabase;
    Loader: ICubeLoaderFromSource;
    Provider: IDtExcelProvider;
    StdCube: IStandardCube;
    DimBindings: ICubeLoaderDimensionBindings;
    DimBinding: ICubeLoaderDimensionBinding;
    FactBindings: ICubeLoaderFactBindings;
    FactBinding: ICubeLoaderFactBinding;
Begin
    MB := MetabaseClass.Active;
    //Источник данных для куба
    Provider := New DtExcelProvider.Create;
    Provider.DriverVersion := "Excel 8.0";
    Provider.File := "C:\Data.xls";
    Provider.HasHeader := True;
    Provider.Query := "Select * From [Лист1$]";
    //Куб, в котором будет изменена структура и загружены данные
    StdCube := MB.ItemById("STD_CUBE").Bind As IStandardCube;
    //Загрузчик данных в куб
    Loader := New CubeLoaderFromSource.Create;
    Loader.Cube := StdCube;
    Loader.EditExistingObject := True;
    //Привязка измерений
    //Страны
    DimBindings := Loader.DimensionBindings;
    DimBinding := DimBindings.Add("Country Name");
    DimBinding.Dimension := StdCube.Dimensions.FindById("COUNTRY");
    DimBinding.Dictionary := DimBinding.Dimension.Dimension;
    //Календарь
    DimBinding := DimBindings.AddCalendar("Date", DimCalendarLevel.Month);
    DimBinding.Dimension := StdCube.Dimensions.Calendar;
    //Привязка фактов
    FactBindings := Loader.FactBindings;
    FactBinding := FactBindings.Add("Value");
    FactBinding.FactKey := 2;
    //Изменение структуры куба и загрузка данных
    Loader.Load(Provider, Null);
End Sub UserProc;

При выполнении примера будет осуществлено изменение структуры указанного куба и повторная загрузка данных в него. После изменения структуры в кубе останется два измерения, поле с данными будет привязано к факту с ключом «2».

Пример Fore.NET

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

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

Public Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    Loader: ICubeLoaderFromSource = New CubeLoaderFromSourceClass();
    Provider: IDtExcelProvider = New DtExcelProviderClass();
    StdCube: IStandardCube;
    DimBindings: ICubeLoaderDimensionBindings;
    DimBinding: ICubeLoaderDimensionBinding;
    FactBindings: ICubeLoaderFactBindings;
    FactBinding: ICubeLoaderFactBinding;
Begin
    MB := Params.Metabase;
    //Источник данных для куба
    Provider.DriverVersion := "Excel 8.0";
    Provider.File := "C:\Data.xls";
    Provider.HasHeader := True;
    Provider.Query := "Select * From [Лист1$]";
    //Куб, в котором будет изменена структура и загружены данные
    StdCube := MB.ItemById["STD_CUBE"].Bind() As IStandardCube;
    //Загрузчик данных в куб
    Loader.Cube := StdCube;
    Loader.EditExistingObject := True;
    //Привязка измерений
    //Страны
    DimBindings := Loader.DimensionBindings;
    DimBinding := DimBindings.Add("Country Name");
    DimBinding.Dimension := StdCube.Dimensions.FindById("COUNTRY");
    DimBinding.Dictionary := DimBinding.Dimension.Dimension;
    //Календарь
    DimBinding := DimBindings.AddCalendar("Date", DimCalendarLevel.dclMonth);
    DimBinding.Dimension := StdCube.Dimensions.Calendar;
    //Привязка фактов
    FactBindings := Loader.FactBindings;
    FactBinding := FactBindings.Add("Value");
    FactBinding.FactKey := 2;
    //Изменение структуры куба и загрузка данных
    Loader.Load(Provider, Null);
End Sub;

См. также:

ICubeLoaderFromSource