MetafactsAttributeRemappings: ICubeMetaUpdateAttributeRemappings;
MetafactsAttributeRemappings: Prognoz.Platform.Interop.Cubes.ICubeMetaUpdateAttributeRemappings;
Свойство MetafactsAttributeRemappings возвращает коллекцию соответствий атрибутов временных рядов обновляемой базы данных временных рядов и атрибутов временных рядов из базы данных временных рядов, находящейся в обновлении.
Для получения коллекции соответствий атрибутов наблюдений используйте свойство ICubeMetaUpdateExParams.MetavalsAttributeRemappings.
Для выполнения примера в файловой системе предполагается наличие файла обновления «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(0) As 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.
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[0] As 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;
См. также: