IMsInterpolateTransform.Input

Синтаксис Fore

Input: IMsFormulaTermInfo;

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

Input: Prognoz.Platform.Interop.Ms.IMsFormulaTermInfo;

Описание

Свойство Input определяет терм, соответствующий исходной переменной.

Комментарии

Для исходной динамики используйте свойство IMsInterpolateTransform.InputLevel.

Пример Fore

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

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

Sub UserProc;
Var
    mb: IMetabase;
    MsKey: Integer;
    Model: IMsModel;
    Stub: IVariableStub;
    Tree: IMsFormulaTransformSlicesTree;
    RubrDescr: IMetabaseObjectDescriptor;
    Transform: IMsFormulaTransform;
    TransformVarables: IMsFormulaTransformVariables;
    TransformVar: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Slice: IMsFormulaTransformSlice;
    Interpolate: IMsInterpolateTransform;
    TermInfo: IMsFormulaTermInfo;
    Calcul: IMsMethodCalculation;
    arr: Array Of double;
    i: Integer;
    Period: IMsModelPeriod;
Begin
    // Получаем текущий репозиторий
    mb := MetabaseClass.Active;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace("MODEL_INTERPOLATE", MsKey).Edit As IMsModel;
    // Получаем объект для настройки параметров модели
    Transform := Model.Transform;
    // Получаем коллекцию моделируемых переменных
    TransformVarables := Transform.Outputs;
    // Получаем первую моделируемую переменную  
    TransformVar := TransformVarables.Item(0);
    // Создаем параметры расчета моделируемой переменной
    Coord := Transform.CreateCoord(TransformVar);
    // Получаем параметры расчета метода «Интерполяция» 
    Interpolate := Transform.FormulaItem(0).Method As IMsInterpolateTransform;
    // Получаем базу данных временных рядов (БДВР)
    RubrDescr := Mb.ItemById("TSDB");
    // Приводим полученную БДВР к абстрактному источнику данных
    Stub := RubrDescr.Bind As IVariableStub;
    // Добавляем в модель фактор, источником данных которого является БДВР
    TransformVar := Transform.Inputs.Add(Stub);
    Tree := TransformVar.SlicesTree(TransformVar);
    Slice := Tree.CreateSlice(2);
    // Получаем фактор в виде терма
    TermInfo := Transform.CreateTermInfo;
    TermInfo.Slice := Slice;
    // Указываем полученный терм в качестве исходной переменной
    Interpolate.Input := TermInfo;
    // Указываем исходную динамику
    Interpolate.InputLevel := DimCalendarLevel.Year;
    // Задаем степень полинома  
    Interpolate.MethodParameter := 3;
    // Указываем метод обработки пропусков
    Interpolate.MissingData.Method := MissingDataMethod.LinTrend;
    // Задаем тип интерполяции: полиноминальная
    Interpolate.MethodType := MsInterpolateType.Polynomial;
    // Создаем объект с параметрами расчета модели
    Calcul := Transform.CreateCalculation;
    // Задаем периоды расчета
    Period := Model.Transform.Period;
    Calcul.Period.IdentificationStartDate := Period.IdentificationStartDate;
    Calcul.Period.IdentificationEndDate := Period.IdentificationEndDate;
    Calcul.Period.ForecastStartDate := Period.ForecastStartDate;
    Calcul.Period.ForecastEndDate := Period.ForecastEndDate;
    Calcul.CurrentPoint := Period.IdentificationStartDate;
    // Получаем данные моделируемой переменной
    arr := Interpolate.CalculateSeries(Calcul, Coord).Modelling;
    // Выводим наименование и данные моделируемой переменной в окно консоли
    Debug.WriteLine(Interpolate.Result.TermInfo.TermText);
    For i := 0 To arr.Length - 1 Do
        Debug.WriteLine(arr[i]);
    End For;
    // Сохраняем изменения в модели 
    (Model As IMetabaseObject).Save;
End Sub UserProc;

В результате выполнения примера будут изменены настройки расчета модели «MODEL_INTERPOLATE»: изменена выходная переменная, метод расчета интерполяции и пр. Результаты расчета будут выведены в окно консоли.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Stat;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    MsKey: uinteger;
    Model: IMsModel;
    Stub: IVariableStub;
    Tree: IMsFormulaTransformSlicesTree;
    RubrDescr: IMetabaseObjectDescriptor;
    Transform: IMsFormulaTransform;
    TransformVarables: IMsFormulaTransformVariables;
    TransformVar: IMsFormulaTransformVariable;
    Coord: IMsFormulaTransformCoord;
    Slice: IMsFormulaTransformSlice;
    Interpolate: IMsInterpolateTransform;
    TermInfo: IMsFormulaTermInfo;
    Calcul: IMsMethodCalculation;
    arr: System.Array;
    i: Integer;
    Period: IMsModelPeriod;
Begin
    // Получаем текущий репозиторий
    mb := Params.Metabase;
    // Получаем ключ контейнера моделирования
    MsKey := mb.GetObjectKeyById("MS");
    // Получаем модель
    Model := mb.ItemByIdNamespace["MODEL_INTERPOLATE", MsKey].Edit() As IMsModel;
    // Получаем объект для настройки параметров модели
    Transform := Model.Transform;
    // Получаем коллекцию моделируемых переменных
    TransformVarables := Transform.Outputs;
    // Получаем первую моделируемую переменную  
    TransformVar := TransformVarables.Item[0];
    // Создаем параметры расчета моделируемой переменной
    Coord := Transform.CreateCoord(TransformVar);
    // Получаем параметры расчета метода «Интерполяция» 
    Interpolate := Transform.FormulaItem[0].Method As IMsInterpolateTransform;
    // Получаем базу данных временных рядов (БДВР)
    RubrDescr := Mb.ItemById["TSDB"];
    // Приводим полученную БДВР к абстрактному источнику данных
    Stub := RubrDescr.Bind() As IVariableStub;
    // Добавляем в модель фактор, источником данных которого является БДВР
    TransformVar := Transform.Inputs.Add(Stub);
    Tree := TransformVar.SlicesTree[TransformVar];
    Slice := Tree.CreateSlice(2);
    // Получаем фактор в виде терма
    TermInfo := Transform.CreateTermInfo();
    TermInfo.Slice := Slice;
    // Указываем полученный терм в качестве исходной переменной
    Interpolate.Input := TermInfo;
    // Указываем исходную динамику
    Interpolate.InputLevel := DimCalendarLevel.dclYear;
    // Задаем степень полинома  
    Interpolate.MethodParameter := 3;
    // Указываем метод обработки пропусков
    Interpolate.MissingData.Method := MissingDataMethod.mdmLinTrend;
    // Задаем тип интерполяции: полиноминальная
    Interpolate.MethodType := MsInterpolateType.mitPolynomial;
    // Создаем объект с параметрами расчета модели
    Calcul := Transform.CreateCalculation();
    // Задаем периоды расчета
    Period := Model.Transform.Period;
    Calcul.Period.IdentificationStartDate := Period.IdentificationStartDate;
    Calcul.Period.IdentificationEndDate := Period.IdentificationEndDate;
    Calcul.Period.ForecastStartDate := Period.ForecastStartDate;
    Calcul.Period.ForecastEndDate := Period.ForecastEndDate;
    Calcul.CurrentPoint := Period.IdentificationStartDate;
    // Получаем данные моделируемой переменной
    arr := Interpolate.CalculateSeries[Calcul, Coord].Modelling;
    // Выводим наименование и данные моделируемой переменной в окно консоли
    System.Diagnostics.Debug.WriteLine(Interpolate.Result.TermInfo.TermText);
    For i := 0 To arr.Length - 1 Do
        System.Diagnostics.Debug.WriteLine(arr[i]);
    End For;
    // Сохраняем изменения в модели 
    (Model As IMetabaseObject).Save();
End Sub;

См. также:

IMsInterpolateTransform