IMsProblemCalculation.MetaAttributeFilter

Синтаксис Fore

MetaAttributeFilter: IMsMetaAttributeFilter;

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

MetaAttributeFilter: Prognoz.Platform.Interop.Ms.IMsMetaAttributeFilter;

Описание

Свойство MetaAttributeFilter возвращает объект, содержащий фильтр, применяемый при расчете задачи моделирования.

Комментарии

По умолчанию применяется пустой фильтр.

Пример Fore

Для выполнения примера в репозитории предполагается наличие контейнера моделирования с идентификатором «MS», содержащего задачу моделирования с идентификатором «PROBLEM_METAFILTER». В базе данных временных рядов, являющейся источником данных для контейнера моделирования, должен присутствовать атрибут рядов «CITY», ссылающийся на справочник.

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

Sub UserProc;
Var
    MB: IMetabase;
    Descr: IMetabaseObjectDescriptor;
    Problem: IMsProblem;
    CalcSettings: IMsProblemCalculationSettings;
    Calculation: IMsProblemCalculation;
    Ruby: IRubricator;
    MetaAttr: IMetaAttribute;
    MetaVals: IMsMetaAttributeValues;
    Dict: IMetabaseObject;
    DI: IDimInstance;
    Sel: IDimSelection;
Begin
    // Получаем текущий репозиторий
    MB := MetabaseClass.Active;
    // Получаем контейнер моделирования
    Descr := MB.ItemById("MS");
    // Получаем задачу моделирования
    Problem := MB.ItemByIdNamespace("PROBLEM_METAFILTER", Descr.Key).Edit As IMsProblem;
    // Создаем настройки расчета задачи
    CalcSettings := Problem.CreateCalculationSettings;
    // Указываем, что расчет будет по сценарию «Факт»
    CalcSettings.FactIncluded := True;
    // Создаем объект для расчета задачи
    Calculation := Problem.Calculate(CalcSettings);
    // Получаем базу данных временных рядов, являющуюся источником данных для контейнера моделирования
    Ruby := (Descr.Bind As IMsModelSpace).DefaultObject.Bind As IRubricator;
    // Получаем атрибут рядов «CITY»
    MetaAttr := Ruby.Facts.Attributes.FindById("CITY");
    // Добавляем фильтрацию по данному атрибуту
    MetaVals := Calculation.MetaAttributeFilter.Add(MetaAttr);
    // Создаём отметку атрибута «CITY»
    Dict := MetaAttr.ValuesObject.Bind;
    DI := Dict.Open(NullAs IDimInstance;
    Sel := DI.CreateSelection;
    Sel.SelectElement(0False);
    // Устанавливаем отметку в фильтр
    MetaVals.Selection := Sel;
    // Выполняем расчет
    Calculation.Run;
    // Сохраняем изменения в задаче моделирования
    (Problem As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера для задачи моделирования будет настроена фильтрация и произведен расчет.

Пример Fore.NET

Необходимые требования и результат выполнения примера 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;
    Descr: IMetabaseObjectDescriptor;
    Problem: IMsProblem;
    CalcSettings: IMsProblemCalculationSettings;
    Calculation: IMsProblemCalculation;
    Ruby: IRubricator;
    MetaAttr: IMetaAttribute;
    MetaVals: IMsMetaAttributeValues;
    Dict: IMetabaseObject;
    DI: IDimInstance;
    Sel: IDimSelection;
Begin
    // Получаем текущий репозиторий
    MB := Params.Metabase;
    // Получаем контейнер моделировния
    Descr := MB.ItemById["MS"];
    // Получаем задачу моделирования
    Problem := MB.ItemByIdNamespace["PROBLEM_METAFILTER", Descr.Key].Edit() As IMsProblem;
    // Создаем настройки расчета задачи
    CalcSettings := Problem.CreateCalculationSettings();
    // Указываем, что расчет будет по сценарию «Факт»
    CalcSettings.FactIncluded := True;
    // Создаем объект для расчета задачи
    Calculation := Problem.Calculate(CalcSettings);
    // Получаем базу данных временных рядов, являющуюся источником данных для контейнера моделирования
    Ruby := (Descr.Bind() As IMsModelSpace).DefaultObject.Bind() As IRubricator;
    // Получаем атрибут рядов «CITY»
    MetaAttr := Ruby.Facts.Attributes.FindById("CITY");
    // Добавляем фильтрацию по данному атрибуту
    MetaVals := Calculation.MetaAttributeFilter.Add(MetaAttr);
    // Создаём отметку атрибута «CITY»
    Dict := MetaAttr.ValuesObject.Bind();
    DI := Dict.Open(NullAs IDimInstance;
    Sel := DI.CreateSelection();
    Sel.SelectElement(0False);
    // Устанавливаем отметку в фильтр
    MetaVals.Selection := Sel;
    // Выполняем расчет
    Calculation.Run();
    // Сохраняем изменения в задаче моделирования
    (Problem As IMetabaseObject).Save();
End Sub;

См. также:

IMsProblemCalculation