ICubeMetaUpdateExParams.MetafactsAttributeRemappings

Синтаксис Fore

MetafactsAttributeRemappings: ICubeMetaUpdateAttributeRemappings;

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

MetafactsAttributeRemappings: Prognoz.Platform.Interop.Cubes.ICubeMetaUpdateAttributeRemappings;

Описание

Свойство MetafactsAttributeRemappings возвращает коллекцию соответствий атрибутов временных рядов обновляемой базы данных временных рядов и атрибутов временных рядов из базы данных временных рядов, находящейся в обновлении.

Комментарии

Для получения коллекции соответствий атрибутов наблюдений используйте свойство ICubeMetaUpdateExParams.MetavalsAttributeRemappings.

Пример Fore

Для выполнения примера в файловой системе предполагается наличие файла обновления «C:\TSDB.pefx». Данное обновление должно содержать только базу данных временных рядов, содержащую атрибут временных рядов с идентификатором «CITY» и атрибут наблюдений с идентификатором «COMMENT». Также предполагается наличие еще одного репозитория, содержащего копию базы данных временных рядов, находящейся в обновлении. Скопированная база данных временных рядов должна содержать атрибут временных рядов с идентификатором «TOWN» и атрибут наблюдений с идентификатором «NOTE». Данные атрибуты должны соответствовать по типу и структуре атрибутам «CITY» и «COMMENT». Идентификаторы баз данных временных рядов в обновлении и в дополнительном репозитории должны совпадать.

Добавьте ссылки на системные сборки: Cubes, Metabase.

Sub UserProc;
Var
    Mb: IMetabase;
    MUpd: IMetabaseUpdate;
    Node: IMetabaseUpdateObjectNode;
    exParams: ICubeMetaUpdateExParams;
    AttrRemappings: ICubeMetaUpdateAttributeRemappings;
    AttrRemapping: ICubeMetaUpdateAttributeRemapping;
Begin
    // Получаем текущий репозиторий
    Mb := MetabaseClass.Active;
    // Создаем обновление
    MUpd := Mb.CreateUpdate;
    // Загружаем обновление из файла
    MUpd.LoadFromFileNF("C:\TSDB.pefx");
    // Проверяем корректность обновления
    MUpd.Prepare;
    // Получаем базу данных временных рядов
    Node := MUpd.RootFolder.Item(0As IMetabaseUpdateObjectNode;
    // Получаем параметры обновления базы данных временных рядов с помощью pefx-файла
    exParams := Node.ExtendedParams As ICubeMetaUpdateExParams;
    // Получаем коллекцию сопоставлений атрибутов временных рядов
    AttrRemappings := exParams.MetafactsAttributeRemappings;
    // Получаем атрибут исходной базы данных временных рядов
    AttrRemapping := AttrRemappings.FindById("CITY");
    // Указываем идентификатор соответствующего атрибута в целевой базе данных временных рядов
    AttrRemapping.Source := "TOWN";
    AttrRemapping.Type := CubeMetaUpdateAttributeRemappingType.Source;
    // Получаем коллекцию сопоставлений атрибутов наблюдений временных рядов
    AttrRemappings := exParams.MetavalsAttributeRemappings;
    // Получаем атрибут исходной базы данных временных рядов
    AttrRemapping := AttrRemappings.FindById("COMMENT");
    // Указываем идентификатор соответствующего атрибута в целевой базе данных временных рядов
    AttrRemapping.Source := "NOTE";
    AttrRemapping.Type := CubeMetaUpdateAttributeRemappingType.Source;
    // Задаем тип обновления: по идентификаторам
    MUpd.BoundType := MetabaseObjectUpdateBoundType.ById;
    // Выполняем сортировку объектов обновления в порядке зависимости
    MUpd.RootFolder.Sort(UpdateSortMode.ByDepends);
    // Сохраняем обновление в файл
    MUpd.SaveToFileNF("C:\TSDB.pefx");
End Sub UserProc;

В результате выполнения примера буде задано соответствие между атрибутами «CITY» и «TOWN», а также атрибутами «COMMENT» и «NOTE». Таким образом, при выполнении обновления в дополнительном репозитории с помощью файла «C:\TSDB.pefx» данные атрибута «CITY» будут использованы для обновления данных атрибута «TOWN», а данные атрибута «COMMENT» - для атрибута «NOTE».

Пример Fore.NET

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

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    MUpd: IMetabaseUpdate;
    Node: IMetabaseUpdateObjectNode;
    exParams: ICubeMetaUpdateExParams;
    AttrRemappings: ICubeMetaUpdateAttributeRemappings;
    AttrRemapping: ICubeMetaUpdateAttributeRemapping;
Begin
    // Получаем текущий репозиторий
    Mb := Params.Metabase;
    // Создаем обновление
    MUpd := Mb.CreateUpdate();
    // Загружаем обновление из файла
    MUpd.LoadFromFileNF("C:\TSDB.pefx", UpdateLoadMode.ulmReplace);
    // Проверяем корректность обновления
    MUpd.Prepare();
    // Получаем базу данных временных рядов
    Node := MUpd.RootFolder.Item[0As IMetabaseUpdateObjectNode;
    // Получаем параметры обновления базы данных временных рядов с помощью pefx-файла
    exParams := Node.ExtendedParams As ICubeMetaUpdateExParams;
    // Получаем коллекцию сопоставлений атрибутов временных рядов
    AttrRemappings := exParams.MetafactsAttributeRemappings;
    // Получаем атрибут исходной базы данных временных рядов
    AttrRemapping := AttrRemappings.FindById("CITY");
    // Указываем идентификатор соответствующего атрибута в целевой базе данных временных рядов
    AttrRemapping.Source := "TOWN";
    AttrRemapping.Type := CubeMetaUpdateAttributeRemappingType.cmuartSource;
    // Получаем коллекцию сопоставлений атрибутов наблюдений временных рядов
    AttrRemappings := exParams.MetavalsAttributeRemappings;
    // Получаем атрибут исходной базы данных временных рядов
    AttrRemapping := AttrRemappings.FindById("COMMENT");
    // Указываем идентификатор соответствующего атрибута в целевой базе данных временных рядов
    AttrRemapping.Source := "NOTE";
    AttrRemapping.Type := CubeMetaUpdateAttributeRemappingType.cmuartSource;
    // Задаем тип обновления: по идентификаторам
    MUpd.BoundType := MetabaseObjectUpdateBoundType.moubtById;
    // Выполняем сортировку объектов обновления в порядке зависимости
    MUpd.RootFolder.Sort(UpdateSortMode.usmByDepends);
    // Сохраняем обновление в файл
    MUpd.SaveToFileNF("C:\TSDB.pefx");
End Sub;

См. также:

ICubeMetaUpdateExParams