Input: IMsFormulaTermInfo;
The Input property determines the term corresponding to input variable.
For IMsInterpolateTransform.InputLevel.
Executing the example requires that the repository contains a modeling container with the MS identifier. This modeling container must contain a monthly frequency model with the MODEL_INTERPOLATE identifier calculated by the Interpolation method. It is also required to have a time series database with the TSDB identifier containing annual and monthly frequencies.
Add links to the Cubes, Dimensions, Metabase, Ms, Stat system assemblies.
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
// Get current repository
mb := MetabaseClass.Active;
// Get modelling container key
MsKey := mb.GetObjectKeyById("MS");
// Get the model
Model := mb.ItemByIdNamespace("MODEL_INTERPOLATE", MsKey).Edit As IMsModel;
// Get object to set up model parameters
Transform := Model.Transform;
// Get output variables collection
TransformVarables := Transform.Outputs;
// Get the first output variable
TransformVar := TransformVarables.Item(0);
// Create calculation parameters of output variable
Coord := Transform.CreateCoord(TransformVar);
// Get calculation parameters of the Interpolation method
Interpolate := Transform.FormulaItem(0).Method As IMsInterpolateTransform;
// Get time series database (TSDB)
RubrDescr := Mb.ItemById("TSDB");
// Cast the obtained TSDB to the abstract data source
Stub := RubrDescr.Bind As IVariableStub;
// Add the factor with the TSDB data source in the model
TransformVar := Transform.Inputs.Add(Stub);
Tree := TransformVar.SlicesTree(TransformVar);
Slice := Tree.CreateSlice(2);
// Get factor as a term
TermInfo := Transform.CreateTermInfo;
TermInfo.Slice := Slice;
// Specify obtained term as an input variable
Interpolate.Input := TermInfo;
// Specify original frequency
Interpolate.InputLevel := DimCalendarLevel.Year;
// Set polynomial degree
Interpolate.MethodParameter := 3;
// Specify missing data treatment method
Interpolate.MissingData.Method := MissingDataMethod.LinTrend;
// Set interpolation type: polynomial
Interpolate.MethodType := MsInterpolateType.Polynomial;
// Create an object with model calculation parameters
Calcul := Transform.CreateCalculation;
// Set calculation periods
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;
// Get output variable data
arr := Interpolate.CalculateSeries(Calcul, Coord).Modelling;
// Output name and data of output variable in the console window
Debug.WriteLine(Interpolate.Result.TermInfo.TermText);
For i := 0 To arr.Length - 1 Do
Debug.WriteLine(arr[i]);
End For;
// Save changes in model
(Model As IMetabaseObject).Save;
End Sub UserProc;
After executing the example calculation settings of the MODEL_INTERPOLATE model are changed: output variable is changed, interpolation calculation method is changed, and so on. Calculation results are displayed in the console window.
See also: