ProviderParams: IImportRequestProviderParams;
The ProviderParams property returns the object that contains parameters of time series import from a data source (excluding time series database).
Executing the example requires a time series database with the OBJ_RUBRICATOR identifier and the time series export file C:\result.txt. Also, the repository must contain an MDM repository with the RDS identifier including the COUNTRY dictionary and other system dictionaries required for working of the time series database. The COUNTRY additional mandatory attribute referring to the countries dictionary has been created in the time series database. Add links to the following system assemblies: Cubes, Db, Dimensions, Dt, Metabase.
Sub CreateImportRequest;
Var
TextProvider: IDtTextProvider;
Mb: IMetabase;
RubDesc, NSIDesc: IMetabaseObjectDescriptor;
CrInfo: IMetabaseObjectCreateInfo;
Obj: IMetabaseObject;
ImportRequestDef: IImportRequestDefinition;
Params: IImportRequestProviderParams;
Bindings: ICubeMetaLoaderBindings;
Binding: ICubeMetaLoaderBinding;
Begin
// Data source for importing from text file
TextProvider := New DtTextProvider.Create;
TextProvider.File := "C:\result.txt";
TextProvider.FormatType := DtTextFormatType.Delimited;
TextProvider.DelimitedColumnDelimiter := ";";
TextProvider.DelimitedTextQualifier := """";
TextProvider.Encoding := "WIN";
TextProvider.RangeHasHeader := True;
TextProvider.Open;
// Create an import schema
Mb := MetabaseClass.Active;
RubDesc := Mb.ItemById("OBJ_RUBRICATOR");
NSIDesc := Mb.ItemById("RDS");
// Import object
CrInfo := Mb.CreateCreateInfo;
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_IMPORTREQUEST;
CrInfo.Id := "OBJ_IMPORTREQUEST_P";
CrInfo.Name := "Import object";
CrInfo.Parent := RubDesc.Bind;
Obj := Mb.CreateObject(CrInfo).Edit;
// Set up source
ImportRequestDef := Obj As IImportRequestDefinition;
ImportRequestDef.SourceType := ImportRequestSourceType.Provider;
ImportRequestDef.DestinationRubricator := RubDesc.Bind As IRubricator;
// Import parameters
Params := ImportRequestDef.ProviderParams;
Params.Provider := TextProvider As IDatasetDataProvider;
Params.NewRevisionName := "Factors import";
Params.ImportObjectKey := Obj.Key;
Params.LoadType := CubeMetaLoaderLoadType.CreateAndUpdate;
Bindings := Params.Bindings;
// Attributes binding
// Calendar
Binding := Bindings.Add;
Binding.BindingType := CubeMetaLoaderBindingType.Calendar;
Binding.CalendarOptions.Levels := DimCalendarLevelSet.Year;
Binding.ByColumns := True;
Binding.CalendarDateFormat := "$Year$A1";
Binding.FieldType := CubeMetaLoaderFieldType.Name;
Binding.Field := "1990A1";
Binding.EndField := "2000A1";
// Measurement units
Binding := Bindings.Add;
Binding.BindingType := CubeMetaLoaderBindingType.Unit;
Binding.FieldType := CubeMetaLoaderFieldType.Name;
Binding.Field := "Units";
Binding.Dimension := Mb.ItemByIdNamespace("UNITS", NSIDesc.Key).Bind As IDimensionModel;
Binding.Index := "PRIMARY_INDEX";
Binding.KeyAttribute := "KEY";
// Frequency
Binding := Bindings.Add;
Binding.BindingType := CubeMetaLoaderBindingType.Attribute;
Binding.Attribute := "DL";
Binding.FieldType := CubeMetaLoaderFieldType.ConstValue;
Binding.FieldValue := DimCalendarLevel.Year;
// Countries
Binding := Bindings.Add;
Binding.BindingType := CubeMetaLoaderBindingType.Attribute;
Binding.Attribute := "COUNTRY";
Binding.FieldType := CubeMetaLoaderFieldType.Name;
Binding.Field := "Code";
Binding.CheckField := "Country";
Binding.Dimension := Mb.ItemByIdNamespace("COUNTRY", NsiDesc.Key).Bind As IDimensionModel;
Binding.Index := "UNIQUEKEY";
Binding.KeyAttribute := "KEY";
Binding.NameAttribute := "NAME";
// Binding by index of all fields with values
//...
Binding := Bindings.Add;
Binding.BindingType := CubeMetaLoaderBindingType.Value;
Binding.FieldType := CubeMetaLoaderFieldType.Index;
Binding.Field := "3";
//...
// Same code blocks by binding other fields with values
// Only field number is changed in each block
//...
// Save import schema
Obj.Save;
End Sub CreateImportRequest;
On executing the example an time series import object is created from the C:\result.txt file. In this object the user can set up calendar parameters and parameters of binding attributes of the time series database to fields with data.
The requirements and result of the Fore.NET example execution match with those in the Fore example.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Db;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Dt;
Imports Prognoz.Platform.Interop.Metabase;
Public Shared Sub Main(Params: StartParams);
Var
TextProvider: DtTextProvider = New DtTextProviderClass();
Mb: IMetabase;
RubDesc, NSIDesc: IMetabaseObjectDescriptor;
CrInfo: IMetabaseObjectCreateInfo;
Obj: IMetabaseObject;
ImportRequestDef: IImportRequestDefinition;
ProviderParams: IImportRequestProviderParams;
Bindings: ICubeMetaLoaderBindings;
Binding: ICubeMetaLoaderBinding;
Begin
// Data source to import from text file
TextProvider.File := "C:\result.txt";
TextProvider.FormatType := DtTextFormatType.tftDelimited;
TextProvider.DelimitedColumnDelimiter := ";";
TextProvider.DelimitedTextQualifier := """";
TextProvider.Encoding := "WIN";
TextProvider.RangeHasHeader := True;
TextProvider.Open();
// Create an import schema
Mb := Params.Metabase;
RubDesc := Mb.ItemById["OBJ_RUBRICATOR"];
NSIDesc := Mb.ItemById["RDS"];
// Import object
CrInfo := Mb.CreateCreateInfo();
CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_IMPORTREQUEST As integer;
CrInfo.Id := "OBJ_IMPORTREQUEST_P";
CrInfo.Name := "Import object";
CrInfo.Parent := RubDesc.Bind();
Obj := Mb.CreateObject(CrInfo).Edit();
// Set up source
ImportRequestDef := Obj As IImportRequestDefinition;
ImportRequestDef.SourceType := ImportRequestSourceType.irstProvider;
ImportRequestDef.DestinationRubricator := RubDesc.Bind() As IRubricator;
// Import parameters
ProviderParams := ImportRequestDef.ProviderParams;
ProviderParams.Provider := TextProvider As IDatasetDataProvider;
ProviderParams.NewRevisionName := "Import factors";
ProviderParams.ImportObjectKey := Obj.Key;
ProviderParams.LoadType := CubeMetaLoaderLoadType.cmlltCreateAndUpdate;
Bindings := ProviderParams.Bindings;
// Attributes binding
// Calendar
Binding := Bindings.Add();
Binding.BindingType := CubeMetaLoaderBindingType.cmlbtCalendar;
Binding.CalendarOptions.Levels := DimCalendarLevelSet.dclsYear;
Binding.ByColumns := True;
Binding.CalendarDateFormat := "$Year$A1";
Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;
Binding.Field := "1990A1";
Binding.EndField := "2000A1";
// Measurement units
Binding := Bindings.Add();
Binding.BindingType := CubeMetaLoaderBindingType.cmlbtUnit;
Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;
Binding.Field := "Units";
Binding.Dimension := Mb.ItemByIdNamespace["UNITS", NSIDesc.Key].Bind() As IDimensionModel;
Binding.Index := "PRIMARY_INDEX";
Binding.KeyAttribute := "KEY";
// Frequency
Binding := Bindings.Add();
Binding.BindingType := CubeMetaLoaderBindingType.cmlbtAttribute;
Binding.Attribute := "DL";
Binding.FieldType := CubeMetaLoaderFieldType.cmlftConstValue;
Binding.FieldValue := DimCalendarLevel.dclYear;
// Countries
Binding := Bindings.Add();
Binding.BindingType := CubeMetaLoaderBindingType.cmlbtAttribute;
Binding.Attribute := "COUNTRY";
Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;
Binding.Field := "Code";
Binding.CheckField := "Country";
Binding.Dimension := Mb.ItemByIdNamespace["COUNTRY", NsiDesc.Key].Bind() As IDimensionModel;
Binding.Index := "UNIQUEKEY";
Binding.KeyAttribute := "KEY";
Binding.NameAttribute := "NAME";
// Binding by index of all fields with values
//...
Binding := Bindings.Add();
Binding.BindingType := CubeMetaLoaderBindingType.cmlbtValue;
Binding.FieldType := CubeMetaLoaderFieldType.cmlftIndex;
Binding.Field := "3";
//...
// Same code blocks by binding of other fields with values
// Only field number changes in each block
//...
// Save import schema
Obj.Save();
End Sub;
See also: