Загрузка данных в существующий куб/БД временных рядов

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

  1. В свойстве Type указать тип объекта репозитория, в который осуществляется загрузка (куб или база данных временных рядов);

  2. В зависимости от указанного типа, в свойстве Cube или Rubricator указать объект, в который будет осуществляться загрузка;

  3. В коллекции DimensionBindings определить параметры привязки измерений к полям источника данных;

  4. В коллекции FactBindings определить параметры привязки фактов к полям источника данных;

  5. Инициализируйте источник данных, из которого будет осуществляться загрузка. Источник должен поддерживать IDtProvider;

  6. После вызова метода Load данные будут загружены.

Рассмотрим пример загрузки данных из существующей таблицы репозитория. Таблица в своей структуре имеет следующие поля:

Загрузка в существующий куб

Загрузка осуществляется в стандартный куб с идентификатором «S_CUBE». В структуре куба добавлены два измерения: измерение стран с идентификатором «COUNTRY» и календарное измерение.

Sub LoadData;
Var
    MB: IMetabase;
    Cube: IStandardCube;
    Dims: IStandardCubeDimensions;
    Loader: ICubeLoaderFromSource;
    Provider: IDtMetabaseProvider;
    Bindings: ICubeLoaderDimensionBindings;
    Binding: ICubeLoaderDimensionBinding;
    FactBinding: ICubeLoaderFactBinding;
Begin
    MB := MetabaseClass.Active;
    //Таблица-источник
    Provider := New DtMetabaseProvider.Create;
    Provider.Dataset := MB.ItemById("T_DATA").Bind As IDatasetModel;
    //Куб, в который будет осуществляться загрузка данных
    Cube := MB.ItemById("S_Cube").Bind As IStandardCube;
    Dims := Cube.Dimensions;
    //Загрузчик данных в куб
    Loader := New CubeLoaderFromSource.Create;
    Loader.Type := CubeLoaderType.Cube;
    Loader.Cube := Cube;
    //Настройка привязок измерений
    Bindings := Loader.DimensionBindings;
    //Измерение стран
    Binding := Bindings.Add("COUNTRY_KEY");
    Binding.AttributeId := "KEY";
    Binding.Dimension := Dims.FindById("COUNTRY");
    Binding.Dictionary := Binding.Dimension.Dimension;
    //Календарное измерение
    Binding := Bindings.AddCalendar("V_DATE", DimCalendarLevel.Year);
    Binding.Dimension := Dims.Calendar;
    //Факт куба
    FactBinding := Loader.FactBindings.Add("VAL");
    FactBinding.FactKey := 1;
    //Загрузка данных
    Loader.Load(Provider, Null);
End Sub LoadData;

Загрузка в существующую базу данных временных рядов

Загрузка осуществляется в БД временных рядов с идентификатором «TSDB». В структуре базы данных создан атрибут «COUNTRY», ссылающийся на справочник стран.

Sub LoadData;
Var
    MB: IMetabase;
    Rub: IRubricator;
    Facts: IMetaDictionary;
    Values: IMetaDictionary;
    Loader: ICubeLoaderFromSource;
    Provider: IDtMetabaseProvider;
    Bindings: ICubeLoaderDimensionBindings;
    Binding: ICubeLoaderDimensionBinding;
    FactBinding: ICubeLoaderFactBinding;
Begin
    MB := MetabaseClass.Active;
    //Таблица-источник
    Provider := New DtMetabaseProvider.Create;
    Provider.Dataset := MB.ItemById("T_DATA").Bind As IDatasetModel;
    //БДВР, в которую будет осуществляться загрузка данных
    Rub := MB.ItemById("TSDB").Bind As IRubricator;
    Facts := Rub.Facts;
    Values := Rub.Values;
    //Инициализация загрузчика данных
    Loader := New CubeLoaderFromSource.Create;
    Loader.Type := CubeLoaderType.Rubricator;
    Loader.Rubricator := Rub;
    //Настройка привязок атрибутов
    Bindings := Loader.DimensionBindings;
    //Измерение стран
    Binding := Bindings.Add("COUNTRY_KEY");
    Binding.AttributeId := "KEY";
    Binding.MetaAttribute := Facts.Attributes.FindById("COUNTRY");
    //Календарное измерение
    Binding := Bindings.AddCalendar("V_DATE", DimCalendarLevel.Year);
    Binding.MetaAttribute := Values.Attributes.FindByTag(MetaAttributeTag.CalendarDate);
    //Привязка атрибута Значение
    FactBinding := Loader.FactBindings.Add("VAL");
    FactBinding.MetaAttribute := Values.Attributes.FindByTag(MetaAttributeTag.Value);
    //Загрузка данных
    Loader.Load(Provider, Null);
End Sub LoadData;

См. также:

Примеры