IMsCrossDimensionAggregationTransform.CompositionRelevanceTerm

Синтаксис

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])

См. также:

IMsCrossDimensionAggregationTransform