ICubeMetaUpdateAttributeRemapping.AlternateHierarchyMappings

Fore Syntax

AlternateHierarchyMappings: IAlternateHierarchyMappings;

Fore.NET Syntax

AlternateHierarchyMappings: Prognoz.Platform.Interop.Cubes.IAlternateHierarchyMappings;

Description

The IAlternateHierarchyMappings property returns parameters of correspondence between alternative hierarchies in the dictionary of the copied time series database and alternative hierarchies in the dictionaries of the database copy.

Comments

Parameters of correspondence between alternative hierarchies and relevant for time series attributes being a reference to the dictionary.

Fore Example

Executing the example requires that the repository contains time series databases with the TSDB_SRC_HIE and TSDB_DEST_HIE identifiers. Data of the time series database must have the same structure and contain a time series attribute with the INDICATOR identifier. The attribute must be a reference to the dictionary. In the TSDB_SRC_HIE time series database the INDICATOR attribute must refer to the DICT_INDICATOR_SRC dictionary; in the TSDB_DEST_HIE dictionary - to the DICT_INDICATOR_DEST dictionary. The DICT_INDICATOR_SRC and the DICT_INDICATOR_DEST dictionaries must have the same structure and contain two or more alternative hierarchies.

Add links to the following system assemblies: Cubes, Dimensions, Metabase, Rds.

Sub UserProc;
Var
    mb: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    Obj: IMetabaseObject;
    ObjDesc: IMetabaseObjectDescriptor;
    RubUpdateEx: ICubeMetaUpdateEx;
    Rub: IRubricator;
    AttrRemapping: ICubeMetaUpdateAttributeRemappings;
    AttrR: ICubeMetaUpdateAttributeRemapping;
    Attr: IMetaAttribute;
    AlterHies: IDimHierarchies;
    AlterHie: IDimHierarchy;
    HieMappings: IAlternateHierarchyMappings;
    HieMap: IAlternateHierarchyMapping;
    Progress: IMetabaseUpdateProgress;
Begin
    // Get repository
    mb := MetabaseClass.Active;
    // Create a copying object
    CrInfo := Mb.CreateCreateInfo;
    CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETAUPDATE;
    CrInfo.Id := Mb.GenerateId("Cube_Meta_Upd");
    CrInfo.Permanent := True;
    CrInfo.Parent := Mb.Root;
    ObjDesc := Mb.CreateObject(CrInfo);
    Obj := ObjDesc.Edit;
    // Set parameters of copying object
    RubUpdateEx := Obj As ICubeMetaUpdateEx;
    // Specify time series database being a data source
    Rub := mb.ItemById("TSDB_SRC_HIE").Bind As IRubricator;
    RubUpdateEx.Rubricator := Rub;
    // Specify repository to copy time series database in
    RubUpdateEx.Metabase := Mb;
    // Specify MDM repository to store time series database
    RubUpdateEx.RdsDatabase := Rub.Database;
    // Specify time series database being a data consumer
    RubUpdateEx.TargetRubricator := mb.ItemById("TSDB_DEST_HIE").Bind As IRubricator;
    // Set attribute correspondence
    AttrRemapping := RubUpdateEx.MetafactsAttributeRemappings;
    // Set correspondence parameters for the INDICATOR attribute both in source and consumer
    AttrR := AttrRemapping.FindById("INDICATOR");
    // Set correspondence parameters for alternative hierarchies both in source and consumer
    HieMappings := AttrR.AlternateHierarchyMappings;
    // Get all alternative hierarchies that exist in dictionary,
    // being a data source for the INDICATOR attribute in source time series database
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind As IDimensionModel).Hierarchies;
    // Get the first alternative hierarchy
    AlterHie := AlterHies.Item(0);
    // Create a correspondence between alternative hierarchies in source and consumer
    HieMap := HieMappings.Add(AlterHie.Key, AlterHie.Id);
    // Get all alternative hierarchies that exist in dictionary,
    // being a data source for the INDICATOR attribute. The attribute is contained in database
    // time series being data consumers.
    Rub := RubUpdateEx.TargetRubricator;
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind As IDimensionModel).Hierarchies;
    // Get the second alternative hierarchy
    AlterHie := AlterHies.Item(1);
    // Specify that the first alternative hierarchy in source time series database
    // corresponds to the second alternative hierarchy in time series database being a data consumer.
    HieMap.TargetId := AlterHie.Id;
    HieMap.TargetKey := AlterHie.Key;
    // Display parameters of copied alternative hierarchy in the console window
    Debug.WriteLine("Identifier of copied alternative hierarchy: " + HieMap.SourceId);
    Debug.WriteLine("Key of copied alternative hierarchy: " + HieMap.SourceKey.ToString);
    // Copy
    RubUpdateEx.Apply(Progress);
    // Save changes in copying object
    Obj.Save;
End Sub UserProc;

After executing the example the TSDB_SRC_HIE time series database is copied to the TSDB_DEST_HIE time series database. When dictionaries that are data sources for the INDICATOR attributes a copied, the first alternative hierarchy in the source time series database corresponds to the second alternative hierarchy in the time series database being a data consumer.

Fore.NET Example

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.Dimensions;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    CrInfo: IMetabaseObjectCreateInfo;
    Obj: IMetabaseObject;
    ObjDesc: IMetabaseObjectDescriptor;
    RubUpdateEx: ICubeMetaUpdateEx;
    Rub: IRubricator;
    AttrRemapping: ICubeMetaUpdateAttributeRemappings;
    AttrR: ICubeMetaUpdateAttributeRemapping;
    Attr: IMetaAttribute;
    AlterHies: IDimHierarchies;
    AlterHie: IDimHierarchy;
    HieMappings: IAlternateHierarchyMappings;
    HieMap: IAlternateHierarchyMapping;
    Progress: IMetabaseUpdateProgress;
Begin
    // Get repository
    mb := Params.Metabase;
    // Create a copying object
    CrInfo := Mb.CreateCreateInfo();
    CrInfo.ClassId := MetabaseObjectClass.KE_CLASS_CUBEMETAUPDATE As integer;
    CrInfo.Id := Mb.GenerateId("Cube_Meta_Upd"0);
    CrInfo.Permanent := True;
    CrInfo.Parent := Mb.Root;
    ObjDesc := Mb.CreateObject(CrInfo);
    Obj := ObjDesc.Edit();
    // Set parameters of copying object
    RubUpdateEx := Obj As ICubeMetaUpdateEx;
    // Specify time series database being a data source
    Rub := mb.ItemById["TSDB_SRC_HIE"].Bind() As IRubricator;
    RubUpdateEx.Rubricator := Rub;
    // Specify repository to copy time series database in
    RubUpdateEx.Metabase := Mb;
    // Specify MDM repository to store time series database
    RubUpdateEx.RdsDatabase := Rub.Database;
    // Specify time series database being a data consumer
    RubUpdateEx.TargetRubricator := mb.ItemById["TSDB_DEST_HIE"].Bind() As IRubricator;
    // Set attribute correspondence
    AttrRemapping := RubUpdateEx.MetafactsAttributeRemappings;
    // Set correspondence parameters for the INDICATOR attribute both in source and consumer
    AttrR := AttrRemapping.FindById("INDICATOR");
    // Set correspondence parameters for alternative hierarchies both in source and consumer
    HieMappings := AttrR.AlternateHierarchyMappings;
    // Get all alternative hierarchies that exist in dictionary,
    // being a data source for the INDICATOR attribute in source time series database
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind() As IDimensionModel).Hierarchies;
    // Get the first alternative hierarchy
    AlterHie := AlterHies.Item[0];
    // Create correspondence between alternative hierarchies in the provider and the consumer    
    HieMap := HieMappings.Add(AlterHie.Key, AlterHie.Id);
    // Get all alternative hierarchies that exist in dictionary,
    // being a data source for the INDICATOR attribute. The attribute is contained in database
    // time series being data consumers.
    Rub := RubUpdateEx.TargetRubricator;
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind() As IDimensionModel).Hierarchies;
    // Get the second alternative hierarchy
    AlterHie := AlterHies.Item[1];
    // Specify that the first alternative hierarchy in source time series database
    // corresponds to the second alternative hierarchy in time series database being a data consumer.
    HieMap.TargetId := AlterHie.Id;
    HieMap.TargetKey := AlterHie.Key;
    // Display parameters of copied alternative hierarchy in the console window
    System.Diagnostics.Debug.WriteLine(Identifier of alternative hierarchy to be copied: " + HieMap.SourceId);
    System.Diagnostics.Debug.WriteLine("Key of the alternative hierarchy to be copied: " + HieMap.SourceKey.ToString());
    // Copy
    RubUpdateEx.Apply(Progress);
    // Save changes in copying object
    Obj.Save();
End Sub;

See also:

ICubeMetaUpdateAttributeRemapping