DuplicateCheck: CubeLoadDuplicateCheckSet;
DuplicateCheck: Prognoz.Platform.Interop.Cubes.CubeLoadDuplicateCheckSet;
The DuplicateCheck property determines a mode of excluding duplicate values.
To select the time series loading mode, use the ICubeMetaLoader.LoadType property.
Executing the example requires a time series database with the TSDB_IMP identifier containing mandatory custom attributes with the CITY and INDICATOR identifiers. These attributes must be links to the dictionary. The child container of time series database must have several scenarios.
The file system must have the D:\res_export.txt file with data.
Contents of the res_export.txt file
Add links to the Cubes, Db, Dimensions, Dt, Metabase, Ms, Rds system assemblies.
<font color="#008080">Sub</font> UserProc;<br /> <font color="#008080">Var</font><br /> TextProvider: IDtTextProvider;<br /> Mb: IMetabase;<br /> TSDBObj: IMetabaseObject;<br /> TSDB: IRubricator;<br /> Attr: IMetaAttributes;<br /> CrInfo: IMetabaseObjectCreateInfo;<br /> Obj: IMetabaseObject;<br /> Loader: ICubeMetaLoader;<br /> Bindings: ICubeMetaLoaderBindings;<br /> Binding: ICubeMetaLoaderBinding;<br /> DimM: IDimensionModel;<br /> <font color="#008080">Begin</font><br /> <font color="#008000">// Create data source for import from text file<br /> </font> TextProvider := <font color="#008080">New</font> DtTextProvider.Create;<br /> TextProvider.File := <font color="#800000">"D:\res_export.txt"</font>;<br /> TextProvider.FormatType := DtTextFormatType.Delimited;<br /> TextProvider.DelimitedColumnDelimiter := <font color="#800000">";"</font>;<br /> TextProvider.DelimitedTextQualifier := <font color="#800000">""""</font>;<br /> TextProvider.Encoding := <font color="#800000">"WIN"</font>;<br /> TextProvider.RangeHasHeader := <font color="#008080">True</font>;<br /> TextProvider.Open;<br /> <font color="#008000">// Get time series database<br /> </font> Mb := MetabaseClass.Active;<br /> TSDBObj := Mb.ItemById(<font color="#800000">"TSDB_IMP"</font>).Bind;<br /> TSDB := TSDBObj <font color="#008080">As</font> IRubricator;<br /> Attr := TSDB.Facts.Attributes;<br /> <font color="#008000">// Create object for loading time series<br /> </font> CrInfo := Mb.CreateCreateInfo;<br /> CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETALOADER;<br /> CrInfo.Parent := TSDBObj;<br /> CrInfo.Id := Mb.GenerateId(<font color="#800000">"CUBEMETALOADER"</font>, TSDBObj.Key);<br /> CrInfo.Permanent := <font color="#008080">False</font>;<br /> Obj := Mb.CreateObject(CrInfo).Edit;<br /> Loader := Obj <font color="#008080">As</font> ICubeMetaLoader;<br /> <font color="#008000">// Specify data source<br /> </font> Loader.Data := TextProvider <font color="#008080">As</font> IDatasetDataProvider;<br /> <font color="#008000">// Specify data consumer<br /> </font> Loader.Rubricator := TSDB;<br /> <font color="#008000">// Set data loading parameters <br /> </font> Loader.ImportObjectKey := Obj.Key;<br /> Loader.NewRevisionName := <font color="#800000">"Data update"</font>;<br /> Loader.LoadType := CubeMetaLoaderLoadType.CreateAndUpdate;<br /> Loader.LoadMode := CubeLoadClearMode.DataAndMetadata;<br /> Loader.DuplicateCheck := CubeLoadDuplicateCheckSet.ValueAttribute <font color="#008080">Or</font> CubeLoadDuplicateCheckSet.Value;<br /> <font color="#008000">// Specify scenario, to which data is loaded<br /> </font> Loader.ScenarioKey := (TSDB.ModelSpace <font color="#008080">As</font> IMsModelSpace).ScenarioTree.Item(<font color="#008000">0</font>).Key;<br /> <font color="#008000">// Set attribute binding<br /> </font> Bindings := Loader.Bindings;<br /> <font color="#008000">// Set calendar binding<br /> </font> Binding := Bindings.Add;<br /> Binding.BindingType := CubeMetaLoaderBindingType.Calendar;<br /> Binding.ByColumns := <font color="#008080">False</font>;<br /> Binding.CalendarDateFormat := <font color="#800000">"$Year$"</font>;<br /> Binding.CalendarOptions.Levels := DimCalendarLevelSet.Year;<br /> Binding.FieldType := CubeMetaLoaderFieldType.Name;<br /> Binding.Field := <font color="#800000">"Year"</font>;<br /> <font color="#008000">// Set binding of the Units attribute (UNIT)<br /> </font> Binding := Bindings.Add;<br /> Binding.BindingType := CubeMetaLoaderBindingType.Unit;<br /> Binding.FieldType := CubeMetaLoaderFieldType.ConstValue;<br /> Binding.FieldValue := <font color="#008000">1</font>;<br /> Binding.Attribute := <font color="#800000">"UNIT"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"UNIT"</font>).ValuesObject.Bind <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item(<font color="#008000">0</font>).Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> <font color="#008000">// Set binding of the Cities attribute (CITY)<br /> </font> Binding := Bindings.Add;<br /> Binding.BindingType := CubeMetaLoaderBindingType.Attribute;<br /> Binding.Attribute := <font color="#800000">"CITY"</font>;<br /> Binding.FieldType := CubeMetaLoaderFieldType.Name;<br /> Binding.Field := <font color="#800000">"CITY_KEY"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"CITY"</font>).ValuesObject.Bind <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item(<font color="#008000">0</font>).Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> Binding.NameAttribute := <font color="#800000">"NAME"</font>;<br /> <font color="#008000">// Set binding of the Indicators attribute (INDICATOR)<br /> </font> Binding := Bindings.Add;<br /> Binding.BindingType := CubeMetaLoaderBindingType.Attribute;<br /> Binding.Attribute := <font color="#800000">"INDICATOR"</font>;<br /> Binding.FieldType := CubeMetaLoaderFieldType.Name;<br /> Binding.Field := <font color="#800000">"INDICATOR_KEY"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"INDICATOR"</font>).ValuesObject.Bind <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item(<font color="#008000">0</font>).Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> Binding.NameAttribute := <font color="#800000">"NAME"</font>;<br /> <font color="#008000">// Set binding for import of series observation values<br /> </font> Binding := Bindings.Add;<br /> Binding.BindingType := CubeMetaLoaderBindingType.Value;<br /> Binding.FieldType := CubeMetaLoaderFieldType.Name;<br /> Binding.Field := <font color="#800000">"Value"</font>;<br /> <font color="#008000">// Load data<br /> </font> Loader.LoadData;<br /> <font color="#008080">End</font> <font color="#008080">Sub</font> UserProc;
After executing the example the data from the "D:\res_export.txt" file will be imported to the time series database for the first scenario, and duplicate data will be excluded.
The requirements and result of the Fore.NET example execution match with those in the Fore example.
<font color="#008080">Imports</font> Prognoz.Platform.Interop.Cubes;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Db;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Dimensions;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Dt;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Ms;<br /> <font color="#008080">Imports</font> Prognoz.Platform.Interop.Rds;<br /> …<br /> <font color="#008080">Public</font> <font color="#008080">Shared</font> <font color="#008080">Sub</font> Main(Params: StartParams);<br /> <font color="#008080">Var</font><br /> TextProvider: IDtTextProvider;<br /> Mb: IMetabase;<br /> TSDBObj: IMetabaseObject;<br /> TSDB: IRubricator;<br /> Attr: IMetaAttributes;<br /> CrInfo: IMetabaseObjectCreateInfo;<br /> Obj: IMetabaseObject;<br /> Loader: ICubeMetaLoader;<br /> Bindings: ICubeMetaLoaderBindings;<br /> Binding: ICubeMetaLoaderBinding;<br /> DimM: IDimensionModel;<br /> <font color="#008080">Begin</font><br /> <font color="#008000">// Create data source for import from text file<br /> </font> TextProvider := <font color="#008080">New</font> DtTextProvider.Create();<br /> TextProvider.File := <font color="#800000">"D:\res_export.txt"</font>;<br /> TextProvider.FormatType := DtTextFormatType.tftDelimited;<br /> TextProvider.DelimitedColumnDelimiter := <font color="#800000">";"</font>;<br /> TextProvider.DelimitedTextQualifier := <font color="#800000">""""</font>;<br /> TextProvider.Encoding := <font color="#800000">"WIN"</font>;<br /> TextProvider.RangeHasHeader := <font color="#008080">True</font>;<br /> TextProvider.Open();<br /> <font color="#008000">// Get time series database<br /> </font> Mb := Params.Metabase;<br /> TSDBObj := Mb.ItemById[<font color="#800000">"TSDB_IMP"</font>].Bind();<br /> TSDB := TSDBObj <font color="#008080">As</font> IRubricator;<br /> Attr := TSDB.Facts.Attributes;<br /> <font color="#008000">// Create object for loading time series<br /> </font> CrInfo := Mb.CreateCreateInfo();<br /> CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETALOADER <font color="#008080">As</font> integer;<br /> CrInfo.Parent := TSDBObj;<br /> CrInfo.Id := Mb.GenerateId(<font color="#800000">"CUBEMETALOADER"</font>, TSDBObj.Key);<br /> CrInfo.Permanent := <font color="#008080">False</font>;<br /> Obj := Mb.CreateObject(CrInfo).Edit();<br /> Loader := Obj <font color="#008080">As</font> ICubeMetaLoader;<br /> <font color="#008000">// Specify data source<br /> </font> Loader.Data := TextProvider <font color="#008080">As</font> IDatasetDataProvider;<br /> <font color="#008000">// Specify data consumer<br /> </font> Loader.Rubricator := TSDB;<br /> <font color="#008000">// Set data loading parameters <br /> </font> Loader.ImportObjectKey := Obj.Key;<br /> Loader.NewRevisionName := <font color="#800000">"Data refresh"</font>;<br /> Loader.LoadType := CubeMetaLoaderLoadType.cmlltCreateAndUpdate;<br /> Loader.LoadMode := CubeLoadClearMode.clcmDataAndMetadata;<br /> Loader.DuplicateCheck := CubeLoadDuplicateCheckSet.cldcValueAttribute <font color="#008080">Or</font> CubeLoadDuplicateCheckSet.cldcValue;<br /> <font color="#008000">// Specify scenario, to which data is loaded<br /> </font> Loader.ScenarioKey := (TSDB.ModelSpace <font color="#008080">As</font> IMsModelSpace).ScenarioTree.Item[<font color="#008000">0</font>].Key <font color="#008080">As</font> integer;<br /> <font color="#008000">// Set attribute binding<br /> </font> Bindings := Loader.Bindings;<br /> <font color="#008000">// Set calendar binding<br /> </font> Binding := Bindings.Add();<br /> Binding.BindingType := CubeMetaLoaderBindingType.cmlbtCalendar;<br /> Binding.ByColumns := <font color="#008080">False</font>;<br /> Binding.CalendarDateFormat := <font color="#800000">"$Year$"</font>;<br /> Binding.CalendarOptions.Levels := DimCalendarLevelSet.dclsYear;<br /> Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;<br /> Binding.Field := <font color="#800000">"Year"</font>;<br /> <font color="#008000">// Set binding of the Units attribute (UNIT)<br /> </font> Binding := Bindings.Add();<br /> Binding.BindingType := CubeMetaLoaderBindingType.cmlbtUnit;<br /> Binding.FieldType := CubeMetaLoaderFieldType.cmlftConstValue;<br /> Binding.FieldValue := <font color="#008000">1</font>;<br /> Binding.Attribute := <font color="#800000">"UNIT"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"UNIT"</font>).ValuesObject.Bind() <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item[<font color="#008000">0</font>].Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> <font color="#008000">// Set binding of the Cities attribute (CITY)<br /> </font> Binding := Bindings.Add();<br /> Binding.BindingType := CubeMetaLoaderBindingType.cmlbtAttribute;<br /> Binding.Attribute := <font color="#800000">"CITY"</font>;<br /> Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;<br /> Binding.Field := <font color="#800000">"CITY_KEY"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"CITY"</font>).ValuesObject.Bind() <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item[<font color="#008000">0</font>].Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> Binding.NameAttribute := <font color="#800000">"NAME"</font>;<br /> <font color="#008000">// Set binding of the Indicators attribute (INDICATOR)<br /> </font> Binding := Bindings.Add();<br /> Binding.BindingType := CubeMetaLoaderBindingType.cmlbtAttribute;<br /> Binding.Attribute := <font color="#800000">"INDICATOR"</font>;<br /> Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;<br /> Binding.Field := <font color="#800000">"INDICATOR_KEY"</font>;<br /> DimM := Attr.FindById(<font color="#800000">"INDICATOR"</font>).ValuesObject.Bind() <font color="#008080">As</font> IDimensionModel;<br /> Binding.Dimension := DimM;<br /> Binding.Index := DimM.Indexes.Item[<font color="#008000">0</font>].Id;<br /> Binding.KeyAttribute := <font color="#800000">"KEY"</font>;<br /> Binding.NameAttribute := <font color="#800000">"NAME"</font>;<br /> <font color="#008000">// Set binding for import of series observation values<br /> </font> Binding := Bindings.Add();<br /> Binding.BindingType := CubeMetaLoaderBindingType.cmlbtValue;<br /> Binding.FieldType := CubeMetaLoaderFieldType.cmlftName;<br /> Binding.Field := <font color="#800000">"Value"</font>;<br /> <font color="#008000">// Load data<br /> </font> Loader.LoadData();<br /> <font color="#008080">End</font> <font color="#008080">Sub</font>;
See also: