AddCalculateSerie(
SerieName: String;
[Level: DimCalendarLevel = -1;]
[Index: Integer = -1]
): ILanerCalculateSerie;
AddCalculateSerie(
SerieName: string;
Level: Prognoz.Platform.Interop.Dimensions.DimCalendarLevel;
Index: integer
): Prognoz.Platform.Interop.Laner.ILanerCalculateSerie;
SerieName. The name of the series to be added.
Level. The calendar frequency of the series to be added.
Index. Index of the position, into which the series must be added.
The AddCalculateSerie method adds a calculated series.
If the Level parameter is not set, or its value is -1, the calendar frequency set in the series formula IMsFormula.Level is used.
If the interpolation or the collapse method is used for the calculation of the series values , the Level parameter must be set.
If the Index parameter has the -1 value, the calculated series is added to the end of the series collection.
Executing the example requires a workbook with the WORKBOOK_SERIES identifier that contains several series.
Add links to the Cubes, Dimensions, Express, Laner, Metabase, Ms system assemblies.
Sub UserProc;
Var
mb: IMetabase;
WbkObj: IMetabaseObject;
EaxAn: IEaxAnalyzer;
Laner: ILaner;
Series: ILanerSeries;
UsingSerie: ILanerSerie;
NewSerie: ILanerCalculateSerie;
Trasss: IFormulaTransformModel;
ms: IMsFormulaTransform;
TransformVar: IMsFormulaTransformVariable;
Coord: IMsFormulaTransformCoord;
Slice: IMsFormulaTransformSlice;
selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
Det: IMsDeterministicTransform;
Term1: IMsFormulaTerm;
Begin
// Get workbook
mb := MetabaseClass.Active;
WbkObj := mb.ItemById("WORKBOOK_SERIES").Edit;
EaxAn := WbkObj As IEaxAnalyzer;
Laner := EaxAn.Laner;
// Get workbook series
Series := Laner.Series;
// Get the first series of wokbook
UsingSerie := Series.Item(0) As ILanerSerie;
// Add calculated series
NewSerie := Laner.Series.AddCalculateSerie("", DimCalendarLevel.Year, 0);
// Set parameters of series name generation
NewSerie.UserName := False;
NewSerie.UserFormat := ("Ln(%s)");
// Set series calculation parameters
NewSerie.UseTransform := True;
Trasss := NewSerie.Transform;
// Set input variable
Trasss.AddInputVariable(UsingSerie.Stub);
// Set calculation formula
ms := Trasss.Transform As IMsFormulaTransform;
TransformVar := ms.Outputs.Item(0);
Coord := ms.CreateCoord(TransformVar);
Slice := TransformVar.Slices.Add(Null);
Selector := ms.CreateSelector;
Selector.Slice := Slice;
Formula := ms.Transform(Selector);
Formula.Kind := MsFormulaKind.Deterministic;
Det := Formula.Method As IMsDeterministicTransform;
TransformVar := ms.Inputs.Add(UsingSerie.Stub);
Slice := TransformVar.Slices.Add(Null);
Term1 := Det.Operands.Add(Slice);
Det.Expression.AsString := "Ln(" + Term1.TermToInnerText + ")";
// Save changes
WbkObj.Save;
End Sub UserProc;
After executing the example the calculated series that calculates natural logarithm of the first series is added to the workbook.
The requirements and result of the Fore.NET example execution match with those in the Fore example.
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Laner;
Imports Prognoz.Platform.Interop.Ms;
…
Public Shared Sub Main(Params: StartParams);
Var
mb: IMetabase;
WbkObj: IMetabaseObject;
EaxAn: IEaxAnalyzer;
Laner: ILaner;
Series: ILanerSeries;
UsingSerie: ILanerSerie;
NewSerie: ILanerCalculateSerie;
Trasss: IFormulaTransformModel;
ms: IMsFormulaTransform;
TransformVar: IMsFormulaTransformVariable;
Coord: IMsFormulaTransformCoord;
Slice: IMsFormulaTransformSlice;
selector: IMsFormulaTransformSelector;
Formula: IMsFormula;
Det: IMsDeterministicTransform;
Term1: IMsFormulaTerm;
Begin
// Get workbook
mb := Params.Metabase;
WbkObj := mb.ItemById["WORKBOOK_SERIES"].Edit();
EaxAn := WbkObj As IEaxAnalyzer;
Laner := EaxAn.Laner;
// Get workbook series
Series := Laner.Series;
// Get the first series of wokbook
UsingSerie := Series.Item[0] As ILanerSerie;
// Add calculated series
NewSerie := Laner.Series.AddCalculateSerie("", DimCalendarLevel.dclYear, 0);
// Set parameters of series name generation
NewSerie.UserName := False;
NewSerie.UserFormat := ("Ln(%s)");
// Set series calculation parameters
NewSerie.UseTransform := True;
Trasss := NewSerie.Transform;
// Set input variable
Trasss.AddInputVariable(UsingSerie.Stub);
// Set calculation formula
ms := Trasss.Transform As IMsFormulaTransform;
TransformVar := ms.Outputs.Item[0];
Coord := ms.CreateCoord(TransformVar);
Slice := TransformVar.Slices.Add(Null);
Selector := ms.CreateSelector();
Selector.Slice := Slice;
Formula := ms.Transform[Selector];
Formula.Kind := MsFormulaKind.mfkDeterministic;
Det := Formula.Method As IMsDeterministicTransform;
TransformVar := ms.Inputs.Add(UsingSerie.Stub);
Slice := TransformVar.Slices.Add(Null);
Term1 := Det.Operands.Add(Slice);
Det.Expression.AsString := "Ln(" + Term1.TermToInnerText() + ")";
// Save changes
WbkObj.Save();
End Sub;
See also: