CompositionRelevanceTerm: IMsFormulaTermInfo;
Свойство CompositionRelevanceTerm определяет параметры терма, задающего блок сравнения для расчета релевантности агрегации.
Свойство устарело, используйте IMsCrossDimensionAggregationTransform.CompositionRelevanceExpression.
При задании данного выражения должно быть определено значение свойства IMsCrossDimensionAggregationOptions.Threshold. Если сумма значений CompositionRelevanceTerm, разделенная на сумму всех значений, меньше значения IMsCrossDimensionAggregationOptions.Threshold, то агрегация не будет рассчитываться.
Для выполнения примера предполагается наличие в репозитории базы данных временных рядов с идентификатором «FC». В контейнере моделирования данной базы должна присутствовать модель с идентификатором «MODEL_AGGR», рассчитываемая методом расширенной агрегации. «COUNTRY» и «INDICATOR» - атрибуты показателей базы, ссылающиеся на справочники.
Sub Main;
Var
mb: IMetabase;
RubrDescr: IMetabaseObjectDescriptor;
Rubr: IRubricator;
msDescr: IMetabaseObjectDescriptor;
Model: IMsModel;
Transform: IMsFormulaTransform;
Formula: IMsFormula;
Aggr: IMsCrossDimensionAggregationTransform;
strsGen: IMsFormulaStringGenerator;
info: IMsFormulaTermInfo;
selFactory: IDimSelectionSetFactory;
SelSet: IDimSelectionSet;
Attributes: IMetaAttributes;
DictDescr: IMetabaseObjectDescriptor;
SliceInp: IMsFormulaTransformSlice;
Options: IMsCrossDimensionAggregationOptions;
Begin
mb := MetabaseClass.Active;
RubrDescr := mb.ItemById("FC");
Rubr := RubrDescr.Bind As IRubricator;
msDescr := Rubr.ModelSpace;
Model := mb.ItemByIdNamespace("MODEL_AGGR", msDescr.Key).Edit As IMsModel;
Transform := Model.Transform;
Formula := Transform.FormulaItem(0);
Aggr := Formula.Method As IMsCrossDimensionAggregationTransform;
Aggr.AgregationMethod := MsAgregationMethodType.WeightedAverage;
selFactory := New DimSelectionSetFactory.Create;
SelSet := selFactory.CreateDimSelectionSet;
Attributes := Rubr.Facts.Attributes;
DictDescr := Attributes.FindById("COUNTRY").ValuesObject;
SelSet.Add(DictDescr.Open(Null) As IDimInstance);
SelSet.Item(0).DeselectAll;
DictDescr := Attributes.FindById("INDICATOR").ValuesObject;
SelSet.Add(DictDescr.Open(Null) As IDimInstance);
SelSet.Item(1).DeselectAll;
SelSet.Item(1).SelectElement(1, False);
info := Transform.CreateTermInfo;
SliceInp := Transform.Inputs.Add(RubrDescr.Bind As IVariableStub).Slices.Add(SelSet);
info.Slice := SliceInp;
Aggr.WeightsTerm := info;
Options := Aggr.Options;
Options.Threshold := 20;
Aggr.CompositionRelevanceTerm := info;
strsGen := Formula.CreateStringGenerator;
strsGen.ShowFullVariableNames := True;
Debug.WriteLine("Выражение агрегации: " + strsGen.Execute);
(Model As IMetabaseObject).Save;
End Sub Main;
После выполнения примера будут изменены следующие параметры модели:
метод агрегации - взвешенное среднее;
заданы веса агрегации;
задан порог и блок сравнения для определения релевантности агрегации.
В окно консоли будет выведено выражение, по которому рассчитывается агрегация:
Выражение агрегации: Angolaa|BCA[t] = Сумма((BCA[t]) * (BCI[t])) / Сумма(BCI[t])
См. также: