ICubeMetaLoader.DuplicateCheck

Syntax

DuplicateCheck: CubeLoadDuplicateCheckSet;

Description

The DuplicateCheck property determines a mode of excluding duplicate values.

Comments

To select the time series loading mode, use the ICubeMetaLoader.LoadType property.

Example

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.

Sub UserProc;
Var
    TextProvider: IDtTextProvider;
    Mb: IMetabase;
    TSDBObj: IMetabaseObject;
    TSDB: IRubricator;
    Attr: IMetaAttributes;
    CrInfo: IMetabaseObjectCreateInfo;
    Obj: IMetabaseObject;
    Loader: ICubeMetaLoader;
    Bindings: ICubeMetaLoaderBindings;
    Binding: ICubeMetaLoaderBinding;
    DimM: IDimensionModel;
Begin
    
// Create a data source for import from text file
    TextProvider := New DtTextProvider.Create;
    TextProvider.File := 
"D:\res_export.txt";
    TextProvider.FormatType := DtTextFormatType.Delimited;
    TextProvider.DelimitedColumnDelimiter := 
";";
    TextProvider.DelimitedTextQualifier := 
"""";
    TextProvider.Encoding := 
"WIN";
    TextProvider.RangeHasHeader := 
True;
    TextProvider.Open;
    
// Get time series database
    Mb := MetabaseClass.Active;
    TSDBObj := Mb.ItemById(
"TSDB_IMP").Bind;
    TSDB := TSDBObj 
As IRubricator;
    Attr := TSDB.Facts.Attributes;
    
// Create an object for loading time series
    CrInfo := Mb.CreateCreateInfo;
    CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETALOADER;
    CrInfo.Parent := TSDBObj;
    CrInfo.Id := Mb.GenerateId(
"CUBEMETALOADER", TSDBObj.Key);
    CrInfo.Permanent := 
False;
    Obj := Mb.CreateObject(CrInfo).Edit;
    Loader := Obj 
As ICubeMetaLoader;
    
// Specify data provider
    Loader.Data := TextProvider As IDatasetDataProvider;
    
// Specify data consumer
    Loader.Rubricator := TSDB;

    // Set data loading parameters
    Loader.ImportObjectKey := Obj.Key;
    Loader.NewRevisionName := 
"Data update";
    Loader.LoadType := CubeMetaLoaderLoadType.CreateAndUpdate;
    Loader.LoadMode := CubeLoadClearMode.DataAndMetadata;
    Loader.DuplicateCheck := CubeLoadDuplicateCheckSet.ValueAttribute 
Or CubeLoadDuplicateCheckSet.Value;
    
// Specify scenario, to which data will be loaded
    Loader.ScenarioKey := (TSDB.ModelSpace As IMsModelSpace).ScenarioTree.Item(0).Key;
    
// Set attribute binding
    Bindings := Loader.Bindings;
    
// Set calendar binding
    Binding := Bindings.Add;
    Binding.BindingType := CubeMetaLoaderBindingType.Calendar;
    Binding.ByColumns := 
False;
    Binding.CalendarDateFormat := 
"$Year$";
    Binding.CalendarOptions.Levels := DimCalendarLevelSet.Year;
    Binding.FieldType := CubeMetaLoaderFieldType.Name;
    Binding.Field := 
"Year";
    
// Set binding of the Measurement Units attribute (UNIT)
    Binding := Bindings.Add;
    Binding.BindingType := CubeMetaLoaderBindingType.Unit;
    Binding.FieldType := CubeMetaLoaderFieldType.ConstValue;
    Binding.FieldValue := 
1;
    Binding.Attribute := 
"UNIT";
    DimM := Attr.FindById(
"UNIT").ValuesObject.Bind As IDimensionModel;
    Binding.Dimension := DimM;
    Binding.Index := DimM.Indexes.Item(
0).Id;
    Binding.KeyAttribute := 
"KEY";

    // Set binding of the Cities attribute (CITY)
    Binding := Bindings.Add;
    Binding.BindingType := CubeMetaLoaderBindingType.Attribute;
    Binding.Attribute := 
"CITY";
    Binding.FieldType := CubeMetaLoaderFieldType.Name;
    Binding.Field := 
"CITY_KEY";
    DimM := Attr.FindById(
"CITY").ValuesObject.Bind As IDimensionModel;
    Binding.Dimension := DimM;
    Binding.Index := DimM.Indexes.Item(
0).Id;
    Binding.KeyAttribute := 
"KEY";
    Binding.NameAttribute := 
"NAME";
    
// Set binding of the Indicators attribute (INDICATOR)
    Binding := Bindings.Add;
    Binding.BindingType := CubeMetaLoaderBindingType.Attribute;
    Binding.Attribute := 
"INDICATOR";
    Binding.FieldType := CubeMetaLoaderFieldType.Name;
    Binding.Field := 
"INDICATOR_KEY";
    DimM := Attr.FindById(
"INDICATOR").ValuesObject.Bind As IDimensionModel;
    Binding.Dimension := DimM;
    Binding.Index := DimM.Indexes.Item(
0).Id;
    Binding.KeyAttribute := 
"KEY";
    Binding.NameAttribute := 
"NAME";
    
// Set binding for import of values of series observations
    Binding := Bindings.Add;
    Binding.BindingType := CubeMetaLoaderBindingType.Value;
    Binding.FieldType := CubeMetaLoaderFieldType.Name;
    Binding.Field := 
"Value";
    
// Load data
    Loader.LoadData;
End Sub 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.

See also:

ICubeMetaLoader