IValidationRatio.SelectionComparatorData

Fore Syntax

SelectionComparatorData: IValidationSelectionValueList;

Fore.NET Syntax

SelectionComparatorData: Prognoz.Platform.Interop.Ms.IValidationSelectionValueList;

Description

The SelectionComparatorData property returns a set of selections determining data used for comparison.

Comments

To set compared series, use the IValidationDetails.SelectionFilter property.

If ComparatorData is not set, data for comparison is determined from the IValidationDetails.SelectionTargetData value.

Fore Example

Executing the example requires that the repository contains a time series database with the TSDB_TARGET identifier containing a validation rule with the VALIDATION identifier. The specified time series database should contain custom attribute with the CITY identifier. The repository should also contain a time series database with the TSDB identifier with the structure identical to the TSDB_TARGET structure.

Add links to the Cubes, Dimensions, Metabase, Ms, Rds system assemblies.

Sub UserProc;
Var
    Mb: IMetabase;
    RubrObj: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Ratio: IValidationRatio;
    ComparisonValue: IValidationComparisonValue;
    SelectionValList: IValidationSelectionValueList;
    Rub: IRubricator;
    SelectionFilter: IValidationSelectionFilter;
    FilterVals: IValidationSelectionValues;
    MetaAttr: IMetaAttribute;
    SelectionVal: IValidationSelectionValue;
    DimInst: IDimInstance;
    DimSel: IDimSelection;
Begin
    Mb := MetabaseClass.Active;
    // Get compared time series database
    RubrObj := Mb.ItemById("TSDB_TARGET");
    Rub := RubrObj.Bind As IRubricator;
    // Get validation rule
    ValidObj := Mb.ItemByIdNamespace("VALIDATION", RubrObj.Key).Edit;
    ValidFilter := ValidObj As IValidationFilter;
    // Set calendar frequency of checked data
    ValidFilter.Level := DimCalendarLevel.Year;
    // Set validation rule type
    ValidFilter.Kind := ValidationDetailsKind.Ratio;
    // Get parameters of the Compare Observations Relations validation
    Ratio := ValidFilter.Details As IValidationRatio;
    // Set comparison parameters
    ComparisonValue := Ratio.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.Less;
    ComparisonValue.Percentage := False;
    ComparisonValue.Value1 := 0.3;
    // Set compared data
    SelectionFilter := Ratio.SelectionFilter;
    SelectionFilter.Clear;
    MetaAttr := Rub.Facts.Attributes.FindById("CITY");
    DimInst := MetaAttr.ValuesObject.Open(NullAs IDimInstance;
    DimSel := DimInst.CreateSelection;
    FilterVals := SelectionFilter.Add(DimSel);
    DimSel.SelectElement(1False);
    FilterVals.Selection := DimSel;
    // Specify time series database used for comparison 
    RubrObj := Mb.ItemById("TSDB");
    Ratio.Comparator := RubrObj.Bind As IVariableStub;
    // Set data used for comparison
    SelectionValList := Ratio.SelectionComparatorData;
    SelectionValList.Clear;
    Rub := RubrObj.Bind As IRubricator;
    MetaAttr := Rub.Facts.Attributes.FindById("CITY");
    DimInst := MetaAttr.ValuesObject.Open(NullAs IDimInstance;
    DimSel := DimInst.CreateSelection;
    SelectionVal := SelectionValList.Add(DimSel);
    DimSel.DeselectAll;
    DimSel.SelectElement(1False);
    SelectionVal.Value := DimSel.ToVariant;
    // Clear validation execution area
    Ratio.SelectionTargetData.Clear;
    // Save the rule
    ValidObj.Save;
End Sub UserProc;

After executing the example the Compare Observations Relations validation rule is set. Relations of observations between the TSDB_TARGET and TSDB databases are compared.

Fore.NET Example

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.Ms;
Imports Prognoz.Platform.Interop.Rds;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    RubrObj: IMetabaseObjectDescriptor;
    ValidObj: IMetabaseObject;
    ValidFilter: IValidationFilter;
    Ratio: IValidationRatio;
    ComparisonValue: IValidationComparisonValue;
    SelectionValList: IValidationSelectionValueList;
    Rub: IRubricator;
    SelectionFilter: IValidationSelectionFilter;
    FilterVals: IValidationSelectionValues;
    MetaAttr: IMetaAttribute;
    SelectionVal: IValidationSelectionValue;
    DimInst: IDimInstance;
    DimSel: IDimSelection;
Begin
    Mb := Params.Metabase;
    // Get compared time series database
    RubrObj := Mb.ItemById["TSDB_TARGET"];
    Rub := RubrObj.Bind() As IRubricator;
    // Get validation rule
    ValidObj := Mb.ItemByIdNamespace["VALIDATION", RubrObj.Key].Edit();
    ValidFilter := ValidObj As IValidationFilter;
    // Set calendar frequency of checked data
    ValidFilter.Level := DimCalendarLevel.dclYear;
    // Set validation rule type
    ValidFilter.Kind := ValidationDetailsKind.vdkRatio;
    // Get parameters of the Compare Observations Relations validation
    Ratio := ValidFilter.Details As IValidationRatio;
    // Set comparison parameters
    ComparisonValue := Ratio.ComparisonValue;
    ComparisonValue.ComparisonOperator := ValidationComparisonOperator.vcoLess;
    ComparisonValue.Percentage := False;
    ComparisonValue.Value1 := 0.3;
    // Set compared data
    SelectionFilter := Ratio.SelectionFilter;
    SelectionFilter.Clear();
    MetaAttr := Rub.Facts.Attributes.FindById("CITY");
    DimInst := MetaAttr.ValuesObject.Open(NullAs IDimInstance;
    DimSel := DimInst.CreateSelection();
    FilterVals := SelectionFilter.Add(DimSel);
    DimSel.SelectElement(1False);
    FilterVals.Selection := DimSel;
    // Specify time series database used for comparison 
    RubrObj := Mb.ItemById["TSDB"];
    Ratio.Comparator := RubrObj.Bind() As IVariableStub;
    // Set data used for comparison
    SelectionValList := Ratio.SelectionComparatorData;
    SelectionValList.Clear();
    Rub := RubrObj.Bind() As IRubricator;
    MetaAttr := Rub.Facts.Attributes.FindById("CITY");
    DimInst := MetaAttr.ValuesObject.Open(NullAs IDimInstance;
    DimSel := DimInst.CreateSelection();
    SelectionVal := SelectionValList.Add(DimSel);
    DimSel.DeselectAll();
    DimSel.SelectElement(1False);
    SelectionVal.Value := DimSel.ToVariant();
    // Clear validation execution area
    Ratio.SelectionTargetData.Clear();
    // Save the rule
    ValidObj.Save();
End Sub;

See also:

IValidationRatio