Attributes: IValidationMetaAttributes;
Attributes: Prognoz.Platform.Interop.Ms.IValidationMetaAttributes;
Свойство Attributes возвращает атрибуты базы данных временных рядов, по которым будет происходить сравнение.
Атрибуты могут быть только уровня рядов или только уровня наблюдений. Невозможно сравнение метаданных по атрибутам рядов и наблюдений одновременно.
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов «TSDB_VALIDATION_PARAMETERS», содержащей правило валидации с идентификатором «VALIDATION». Также указанная база данных временных рядов должна содержать атрибут рядов с идентификатором «CITY».
Добавьте ссылки на системные сборки: Cubes, Dimensions, Metabase, Ms, Rds.
Sub UserProc;
Var
Mb: IMetabase;
RubrObj: IMetabaseObjectDescriptor;
Rub: IRubricator;
ValidObj: IMetabaseObject;
ValidFilter: IValidationFilter;
RevisionComparisonData: IValidationRevisionMetadataComparison;
FactAttrs: IMetaAttributes;
ValAttrs: IValidationMetaAttributes;
Attr: IMetaAttribute;
RubInst: IRubricatorInstance;
MetaData: IMetaDictionaryData;
MetaMemb: IMetaDataMembers;
Begin
Mb := MetabaseClass.Active;
// Получаем базу данных временных рядов
RubrObj := Mb.ItemById("TSDB_VALIDATION_PARAMETERS");
Rub := RubrObj.Bind As IRubricator;
// Получаем правило валидации
ValidObj := Mb.ItemByIdNamespace("VALIDATION", RubrObj.Key).Edit;
ValidFilter := ValidObj As IValidationFilter;
// Указываем, что валидация выполняется по всем уровням календарной динамики
ValidFilter.Level := DimCalendarLevel.None;
// Указываем тип валидации
ValidFilter.Kind := ValidationDetailsKind.RevisionComparison;
// Получаем параметры валидации «Сравнение версий метаданных»
RevisionComparisonData := ValidFilter.Details As IValidationRevisionMetadataComparison;
// Задаем тип расчета правила и параметры сравнения метаданных
RevisionComparisonData.CalculationType := MsCalculationType.Serie;
RevisionComparisonData.ComparisonType := ValidationRevisionMetadataComparisonType.Change;
// Задаем ключ сравниваемой ревизии
RubInst := RubrObj.Open(Null) As IRubricatorInstance;
MetaData := RubInst.Revisions.GetData(1);
MetaMemb := MetaData.Record.Members;
RevisionComparisonData.Revision := MetaMemb.FindById("KEY").Value;
// Задаем атрибуты, по которым рассчитывается правило
FactAttrs := Rub.Facts.Attributes;
Attr := FactAttrs.FindById("CITY");
ValAttrs := RevisionComparisonData.Attributes;
ValAttrs.Add(Attr);
// Очищаем область выполнения и фильтр валидации
RevisionComparisonData.SelectionTargetData.Clear;
RevisionComparisonData.SelectionFilter.Clear;
// Сохраняем правило
ValidObj.Save;
End Sub UserProc;
В результате выполнения примера будет настроено правило валидации «Сравнение с версией метаданных»: выявляются ряды со значением атрибута «CITY», изменённым между первой и текущей ревизией.
Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Rds;
…
Public Shared Sub Main(Params: StartParams);
Var
Mb: IMetabase;
RubrObj: IMetabaseObjectDescriptor;
Rub: IRubricator;
ValidObj: IMetabaseObject;
ValidFilter: IValidationFilter;
RevisionComparisonData: IValidationRevisionMetadataComparison;
FactAttrs: IMetaAttributes;
ValAttrs: IValidationMetaAttributes;
Attr: IMetaAttribute;
RubInst: IRubricatorInstance;
MetaData: IMetaDictionaryData;
MetaMemb: IMetaDataMembers;
i: integer;
Begin
Mb := Params.Metabase;
// Получаем базу данных временных рядов
RubrObj := Mb.ItemById["TSDB_VALIDATION_PARAMETERS"];
Rub := RubrObj.Bind() As IRubricator;
// Получаем правило валидации
ValidObj := Mb.ItemByIdNamespace["VALIDATION", RubrObj.Key].Edit();
ValidFilter := ValidObj As IValidationFilter;
// Указываем, что валидация выполняется по всем уровням календарной динамики
ValidFilter.Level := DimCalendarLevel.dclNone;
// Указываем тип валидации
ValidFilter.Kind := ValidationDetailsKind.vdkRevisionMetadataComparison;
// Получаем параметры валидации «Сравнение версий метаданных»
RevisionComparisonData := ValidFilter.Details As IValidationRevisionMetadataComparison;
// Задаем тип расчета правила и параметры сравнения метаданных
RevisionComparisonData.CalculationType := MsCalculationType.mctSerie;
RevisionComparisonData.ComparisonType := ValidationRevisionMetadataComparisonType.vrcmtChange;
// Задаем ключ сравниваемой ревизии
RubInst := RubrObj.Open(Null) As IRubricatorInstance;
MetaData := RubInst.Revisions.GetData(1, False);
MetaMemb := MetaData.Record.Members;
i := MetaMemb.FindById("KEY").Value As integer;
RevisionComparisonData.Revision := i As uinteger;
// Задаем атрибуты, по которым рассчитывается правило
FactAttrs := Rub.Facts.Attributes;
Attr := FactAttrs.FindById("CITY");
ValAttrs := RevisionComparisonData.Attributes;
ValAttrs.Add(Attr);
// Очищаем область выполнения и фильтр валидации
RevisionComparisonData.SelectionTargetData.Clear();
RevisionComparisonData.SelectionFilter.Clear();
// Сохраняем правило
ValidObj.Save();
End Sub;
См. также: