IDimSelectionSetFactory.CreateDimSelectionSet

Syntax

CreateDimSelectionSet: IDimSelectionSet;

Description

The CreateDimSelectionSet method creates complex selection of the dictionaries.

Comments

Complex selection includes selections of separate dictionaries, that organize dimensions in multidimensional data sources. Used to indicate coordinates for data extraction.

Example

Executing the example requires a modeling container with two variables that have additional dimensions.

Sub UserProc;
Var
    MB: IMetabase;
    CrInf: IMetabaseObjectCreateInfo;
    MObj: IMetabaseObject;
    Model: IMsModel;
    Trans: IMsFormulaTransform;
    VarTrans: IMsFormulaTransformVariable;
    Slice, Slice1: IMsFormulaTransformSlice;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    NonLinear: IMsNonLinearRegressionTransform;
    Varr: IMsVariable;
    TransVar: IMsFormulaTransformVariable;
    TermX1, TermX2: IMsFormulaTerm;
    SelectionFact: IDimSelectionSetFactory;
    Selection: IDimSelectionSet;
    s: String;
    i: Integer;
Begin
    MB := MetabaseClass.Active;
    //create a model
    CrInf := Mb.CreateCreateInfo;
    CrInf.ClassId := MetabaseObjectClass.KE_CLASS_MSMODEL;
    CrInf.Id := "New_NonLinReg";
    CrInf.Name := "New_NonLinReg";
    CrInf.Parent := Mb.ItemById("KONT_MODEL");
    MObj := Mb.CreateObject(CrInf).Edit;
    Model := MObj As IMsModel;
    Trans := Model.Transform;
    // add an output variable
    Varr := MB.ItemByIdNamespace("Var_1", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
    Model.Output.Add(Varr);
    //create an empty selection
    SelectionFact := New DimSelectionSetFactory.Create;
    Selection := SelectionFact.CreateDimSelectionSet;
    //if output variable contains additional dimensions, select element with the 3 index in them
    For i := 0 To Varr.Dimensions.Count - 1 Do
        Selection.Add((Varr.Dimensions.Item(i).Model As IMetabaseObject).Open(NullAs IDimInstance);
        Selection.Item(i).SelectElement(3False);
    End For;
    VarTrans := Trans.Outputs.Item(0);
    //get slice in output variable
    Slice := VarTrans.Slices.Add(Selection);
    Selector := Model.Transform.CreateSelector;
    Selector.Slice := Slice;
    Formula := Model.Transform.Transform(Selector);
    Formula.Kind := MsFormulaKind.NonLinearRegression;
    NonLinear := Formula.Method As IMsNonLinearRegressionTransform;
    //add an input variable
    Varr := MB.ItemByIdNamespace("Var_Factor", MB.ItemById("KONT_MODEL").Key).Bind As IMsVariable;
    Model.Input.Add(Varr);
    TransVar := Model.Transform.Inputs.Item(0);
    //fix selection by all additional dimensions
    For i := 0 To Varr.Dimensions.Count - 1 Do
        Selection.Add((Varr.Dimensions.Item(i).Model As IMetabaseObject).Open(NullAs IDimInstance);
        Selection.Item(i).DeselectAll;
        Selection.Item(i).SelectElement(1False);
    End For;
    //add a slice to variable
    Slice := TransVar.Slices.Add(Selection);
    //create selection for the second slice
    For i := 0 To Varr.Dimensions.Count - 1 Do
        Selection.Item(i).DeselectAll;
        Selection.Item(i).SelectElement(3False);
    End For;
    //add the second slice to variable
    Slice1 := TransVar.Slices.Add(Selection);
    //create two terms by different slices in variable
    TermX1 := NonLinear.Operands.Add(Slice);
    TermX2 := NonLinear.Operands.Add(Slice1);
    //create an equation
    s := "A0+" + Trans.SliceToTerm(TermX1.Slice, TermX1.Lag.AsString) + "/10+ " + Trans.SliceToTerm(TermX2.Slice, 
        TermX2.Lag.AsString);
    NonLinear.Expression.AsString := s;
    MObj.Save;
End Sub UserProc;

After executing the example a model is created in modeling container. An output variable is added to the model, elements with the index 3 are selected in all additional slices of this variable. Calculation specification is set up for the obtained slice. Non-linear regression method is used in calculations. A variable with some elements fixed in additional dimensions is added to the list of input variables. Then terms are obtained and an equation is formed.

See also:

IDimSelectionSetFactory