ICubeMetaUpdateAttributeRemapping.AlternateHierarchyMappings

Синтаксис Fore

AlternateHierarchyMappings: IAlternateHierarchyMappings;

Синтаксис Fore.NET

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

Описание

Свойство AlternateHierarchyMappings возвращает параметры соответствия между альтернативными иерархиями в справочниках копируемой базы данных временных рядов и альтернативными иерархиями в справочниках базы-копии.

Комментарии

Параметры соответствия между альтернативными иерархиями актуальны только для атрибутов временных рядов, являющихся ссылкой на справочник.

Пример Fore

Для выполнения примера в репозитории предполагается наличие баз данных временных рядов с идентификаторами «TSDB_SRC_HIE» и «TSDB_DEST_HIE». Данные базы данных временных рядов должны иметь одинаковую структуру и содержать атрибут временных рядов с идентификатором «INDICATOR». Атрибут должен являться ссылкой на справочник. В базе данных временных рядов «TSDB_SRC_HIE» атрибут «INDICATOR» должен ссылаться на справочник с идентификатором «DICT_INDICATOR_SRC», в базе данных временных рядов «TSDB_DEST_HIE» - на справочник с идентификатором «DICT_INDICATOR_DEST». Справочники «DICT_INDICATOR_SRC», «DICT_INDICATOR_DEST» должны иметь одинаковую структуру и содержать две или более альтернативные иерархии.

Добавьте ссылки на системные сборки: 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
    // Получаем репозиторий
    mb := MetabaseClass.Active;
    // Создаем объект копирования
    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;
    // Задаем параметры объекта копирования
    RubUpdateEx := Obj As ICubeMetaUpdateEx;
    // Указываем базу данных временных рядов, являющуюся источником данных
    Rub := mb.ItemById("TSDB_SRC_HIE").Bind As IRubricator;
    RubUpdateEx.Rubricator := Rub;
    // Указываем репозиторий, в который будет скопирована база данных временных рядов
    RubUpdateEx.Metabase := Mb;
    // Указываем репозиторий НСИ для хранения данных базы данных временных рядов
    RubUpdateEx.RdsDatabase := Rub.Database;
    // Указываем базу данных временных рядов, являющуюся приемником данных
    RubUpdateEx.TargetRubricator := mb.ItemById("TSDB_DEST_HIE").Bind As IRubricator;
    // Задаем соответствие атрибутов
    AttrRemapping := RubUpdateEx.MetafactsAttributeRemappings;
    // Задаем параметры соответствия атрибута «INDICATOR» в источнике и приемнике
    AttrR := AttrRemapping.FindById("INDICATOR");
    // Задаем параметры соответствия альтернативных иерархий в источнике и приемнике
    HieMappings := AttrR.AlternateHierarchyMappings;
    // Получаем все альтернативные иерархии, которые присутствуют в справочнике,
    // являющимся источником данных для атрибута «INDICATOR» в исходной базе данных временных рядов
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind As IDimensionModel).Hierarchies;
    // Получаем первую альтернативную иерархию
    AlterHie := AlterHies.Item(0);
    // Создаем соответствие между альтернативными иерархиями в источнике и приемнике
    HieMap := HieMappings.Add(AlterHie.Key, AlterHie.Id);
    // Получаем все альтернативные иерархии, которые присутствуют в справочнике,
    // являющимся источником данных для атрибута «INDICATOR». Атрибут содержится в базе данных
    // временных рядов, являющейся приемником данных.
    Rub := RubUpdateEx.TargetRubricator;
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind As IDimensionModel).Hierarchies;
    // Получаем вторую альтернативную иерархию
    AlterHie := AlterHies.Item(1);
    // Указываем, что первая альтернативная иерархия в исходной базе данных временных рядов
    // соответствует второй альтернативной иерархии в базе данных временных рядов, являющейся приемником данных.
    HieMap.TargetId := AlterHie.Id;
    HieMap.TargetKey := AlterHie.Key;
    // Выводим параметры копируемой альтернативной иерархии в окно консоли
    Debug.WriteLine("Идентификатор копируемой альтернативной иерархии: " + HieMap.SourceId);
    Debug.WriteLine("Ключ копируемой альтернативной иерархии: " + HieMap.SourceKey.ToString);
    // Выполняем копирование
    RubUpdateEx.Apply(Progress);
    // Сохраняем изменения в объекте копирования
    Obj.Save;
End Sub UserProc;

В результате выполнения примера будет выполнено копирование базы данных временных рядов «TSDB_SRC_HIE» в базу данных временных рядов «TSDB_DEST_HIE». При копировании справочников, являющихся источниками данных для атрибутов «INDICATOR» первая альтернативная иерархия в исходной базе данных временных рядов будет соответствовать второй альтернативной иерархии в базе данных временных рядов, являющейся приемником данных.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

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
    // Получаем репозиторий
    mb := Params.Metabase;
    // Создаем объект копирования
    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();
    // Задаем параметры объекта копирования
    RubUpdateEx := Obj As ICubeMetaUpdateEx;
    // Указываем базу данных временных рядов, являющуюся источником данных
    Rub := mb.ItemById["TSDB_SRC_HIE"].Bind() As IRubricator;
    RubUpdateEx.Rubricator := Rub;
    // Указываем репозиторий, в который будет скопирована база данных временных рядов
    RubUpdateEx.Metabase := Mb;
    // Указываем репозиторий НСИ для хранения данных базы данных временных рядов
    RubUpdateEx.RdsDatabase := Rub.Database;
    // Указываем базу данных временных рядов, являющуюся приемником данных
    RubUpdateEx.TargetRubricator := mb.ItemById["TSDB_DEST_HIE"].Bind() As IRubricator;
    // Задаем соответствие атрибутов
    AttrRemapping := RubUpdateEx.MetafactsAttributeRemappings;
    // Задаем параметры соответствия атрибута «INDICATOR» в источнике и приемнике
    AttrR := AttrRemapping.FindById("INDICATOR");
    // Задаем параметры соответствия альтернативных иерархий в источнике и приемнике
    HieMappings := AttrR.AlternateHierarchyMappings;
    // Получаем все альтернативные иерархии, которые присутствуют в справочнике,
    // являющимся источником данных для атрибута «INDICATOR» в исходной базе данных временных рядов
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind() As IDimensionModel).Hierarchies;
    // Получаем первую альтернативную иерархию
    AlterHie := AlterHies.Item[0];
    // Создаем соответствие между альтернативными иерархиями в источнике и приемнике    
    HieMap := HieMappings.Add(AlterHie.Key, AlterHie.Id);
    // Получаем все альтернативные иерархии, которые присутствуют в справочнике,
    // являющимся источником данных для атрибута «INDICATOR». Атрибут содержится в базе данных
    // временных рядов, являющейся приемником данных.
    Rub := RubUpdateEx.TargetRubricator;
    Attr := Rub.Facts.Attributes.FindById("INDICATOR");
    AlterHies := (Attr.ValuesObject.Bind() As IDimensionModel).Hierarchies;
    // Получаем вторую альтернативную иерархию
    AlterHie := AlterHies.Item[1];
    // Указываем, что первая альтернативная иерархия в исходной базе данных временных рядов
    // соответствует второй альтернативной иерархии в базе данных временных рядов, являющейся приемником данных.
    HieMap.TargetId := AlterHie.Id;
    HieMap.TargetKey := AlterHie.Key;
    // Выводим параметры копируемой альтернативной иерархии в окно консоли
    System.Diagnostics.Debug.WriteLine("Идентификатор копируемой альтернативной иерархии: " + HieMap.SourceId);
    System.Diagnostics.Debug.WriteLine("Ключ копируемой альтернативной иерархии: " + HieMap.SourceKey.ToString());
    // Выполняем копирование
    RubUpdateEx.Apply(Progress);
    // Сохраняем изменения в объекте копирования
    Obj.Save();
End Sub;

См. также:

ICubeMetaUpdateAttributeRemapping