ICubeMetaLoaderBindingParser.ReplaceMap

Syntax

ReplaceMap: IStringMap;

Description

The ReplaceMap property returns a map of character strings that determines shifts for loaded values.

Example

Executing the example requires a time series database with the OBJ_FC identifier and the time series export file C:\Fixed.xlsx. Also, the repository must contain an MDM repository with the MDM_REPO identifier. This repository should have dictionaries with the DICT_CTR, DICT_IND and UNITS odentifiers. The COUNTRY attribute of the time series database refers to the DICT_CTR dictionary, the INDICATOR attribute is a link to the DICT_IND dictionary, and measurement units refer to the UNITS dictionary.

The C:\Fixed.xlsx file, for which the example is created

Sub Main;

Var

Mb: IMetabase;

NsiDescr: IMetabaseObjectDescriptor;

CubeMetaLoader: ICubeMetaLoader;

CrInfo: IMetabaseObjectCreateInfo;

Obj: IMetabaseObject;

ObjDesc: IMetabaseObjectDescriptor;

CubeMetaLoaderBindings: ICubeMetaLoaderBindings;

CalendarBinding: ICubeMetaLoaderBinding;

CountryBinding: ICubeMetaLoaderBinding;

IndicatorBinding: ICubeMetaLoaderBinding;

UnitBinding: ICubeMetaLoaderBinding;

ScaleBinding: ICubeMetaLoaderBinding;

LevelBinding: ICubeMetaLoaderBinding;

ValueBinding: ICubeMetaLoaderBinding;

Parser: ICubeMetaLoaderBindingParser;

Excel: IDtExcelProvider;

Provider: IDatasetDataProvider;

Log: ICubeMetaLoaderLog;

Entry: ICubeMetaLoaderLogEntry;

Count, i: Integer;

TestResult: ICubeMetaLoaderTestLoadResult;

TestResultEntry: ICubeMetaLoaderTestLoadResultEntry;

Begin

Mb := MetabaseClass.Active;

NsiDescr := Mb.ItemById("RDS_REPO");

 

CrInfo := Mb.CreateCreateInfo;

CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETALOADER;

CrInfo.Id := "CUBEMETALOADER";

CrInfo.Permanent := False;

ObjDesc := Mb.CreateObject(CrInfo);

Obj := ObjDesc.Edit;

CubeMetaLoader := Obj As ICubeMetaLoader;

CubeMetaLoader.LoadType := CubeMetaLoaderLoadType.CreateAndUpdate;

CubeMetaLoader.Rubricator := Mb.ItemById("OBJ_FC").Bind As IRubricator;

CubeMetaLoaderBindings := CubeMetaLoader.Bindings;

 

CalendarBinding := CubeMetaLoaderBindings.Add;

CalendarBinding.BindingType := CubeMetaLoaderBindingType.Calendar;

CalendarBinding.CalendarOptions.Levels := DimCalendarLevelSet.Year;

CalendarBinding.ByColumns := False;

CalendarBinding.CalendarDateFormat := "$Year$";

CalendarBinding.FieldType := CubeMetaLoaderFieldType.Name;

CalendarBinding.Field := "Year";

Parser := CalendarBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 2;

Parser.StringPositionEnd := -1;

 

IndicatorBinding := CubeMetaLoaderBindings.Add;

IndicatorBinding.BindingType := CubeMetaLoaderBindingType.Attribute;

IndicatorBinding.Attribute := "INDICATOR";

IndicatorBinding.Field := "Indicator Code";

IndicatorBinding.FieldType := CubeMetaLoaderFieldType.Name;

IndicatorBinding.Dimension := Mb.ItemByIdNamespace("DICT_IND", NsiDescr.Key).Bind As IDimensionModel;

// IX_CODE - is a dictionary DICT_IND unique key

IndicatorBinding.Index := "IX_CODE";

IndicatorBinding.KeyAttribute := "KEY";

Parser := IndicatorBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 2;

Parser.StringPositionEnd := 7;

Parser.ReplaceMap.Add("NGDPDD", "NGDP_D");

 

CountryBinding := CubeMetaLoaderBindings.Add;

CountryBinding.BindingType := CubeMetaLoaderBindingType.Attribute;

CountryBinding.Attribute := "COUNTRY";

CountryBinding.Field := "Country Code";

CountryBinding.FieldType := CubeMetaLoaderFieldType.Name;

CountryBinding.Dimension := Mb.ItemByIdNamespace("DICT_CTR", NsiDescr.Key).Bind As IDimensionModel;

// IX_WEO - is a dictionary DICT_CTR unique key

CountryBinding.Index := "IX_WEO";

CountryBinding.KeyAttribute := "KEY";

CountryBinding.NameAttribute := "NAME";

Parser := CountryBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 3;

Parser.StringPositionEnd := 5;

Parser.SkipList.Add("21a");

Parser.ReplaceMap.Add("21c", "213");

 

LevelBinding := CubeMetaLoaderBindings.Add;

LevelBinding.BindingType := CubeMetaLoaderBindingType.Attribute;

LevelBinding.Attribute := "DL";

LevelBinding.FieldType := CubeMetaLoaderFieldType.ConstValue;

LevelBinding.FieldValue := DimCalendarLevel.Year As Integer;

UnitBinding := CubeMetaLoaderBindings.Add;

UnitBinding.BindingType := CubeMetaLoaderBindingType.Unit;

UnitBinding.Field := "Units";

UnitBinding.FieldType := CubeMetaLoaderFieldType.Name;

Parser := UnitBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 0;

Parser.StringPositionEnd := -1;

 

ScaleBinding := CubeMetaLoaderBindings.Add;

ScaleBinding.BindingType := CubeMetaLoaderBindingType.Unit;

ScaleBinding.Field := "Scale";

ScaleBinding.FieldType := CubeMetaLoaderFieldType.Name;

ScaleBinding.Dimension := Mb.ItemByIdNamespace("UNITS", NsiDescr.Key).Bind As IDimensionModel;

// IX_WEO_UNIT_SCALE - is a dictionary UNITS unique key

ScaleBinding.Index := "IX_WEO_UNIT_SCALE";

ScaleBinding.KeyAttribute := "KEY";

Parser := ScaleBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 0;

Parser.StringPositionEnd := -1;

 

ValueBinding := CubeMetaLoaderBindings.Add;

ValueBinding.BindingType := CubeMetaLoaderBindingType.Value;

ValueBinding.Field := "Value";

ValueBinding.FieldType := CubeMetaLoaderFieldType.Name;

Parser := ValueBinding.Parser;

Parser.ParserType := CubeMetaLoaderParserType.FixedPosition;

Parser.StringPositionStart := 0;

Parser.StringPositionEnd := -1;

 

Excel := New DtExcelProvider.Create;

Excel.ImexMode := DtExcelImexMode.Import;

Excel.File := "C:\Fixed.xlsx";

Excel.Query := "SELECT * FROM [Sheet1$]";

Excel.HasHeader := True;

Excel.CheckFieldName := True;

Excel.Open;

Provider := Excel As IDatasetDataProvider;

 

CubeMetaLoader.Data := Provider;

TestResult := CubeMetaLoader.TestLoad;

Count := TestResult.Count;

Debug.WriteLine(Testing);

Debug.WriteLine(Total amount of errors in the tag: + Count.ToString);

If Count > 0 Then

For i := 0 To Count - 1 Do

TestResultEntry := TestResult.Item(i);

Debug.WriteLine(TestResultEntry.Attribute + " : "

+ TestResultEntry.Value + " = "

+ TestResultEntry.Count.ToString);

If i >= 10 - 1 Then

Break;

End If;

End For;

Else

CubeMetaLoader.Data := Provider;

CubeMetaLoader.LoadData;

Log := CubeMetaLoader.Log;

Count := Log.Count;

Debug.WriteLine(Data loading);

Debug.WriteLine("Total number of records in the log: " + Count.ToString);

For i := 0 To Count - 1 Do

Entry := Log.Item(i);

Debug.WriteLine(i.ToString + " : "

+ Entry.DateBegin.ToString + ","

+ Entry.RecordNumber.ToString + ","

+ Entry.Field + ","

+ Entry.ErrorMessage);

If i >= 10 - 1 Then

Break;

End If;

End For;

End If;

End Sub Main;

After executing the example factors are exported from the C:\Fixed.xlsx file. Attributes are recognized by fixed positions. The NGDPDD value of the INDICATOR attribute is replaced with the NGDP_D value and the 21c value of the COUNTRY attribute is replaced with the 213 value.

See also:

ICubeMetaLoaderBindingParser