IMsCrossDimensionAggregationOptions.FillGapsUserMethod

Синтаксис

FillGapsUserMethod: IForeMethod;

Описание

Свойство FillGapsUserMethod определяет пользовательский метод обработки пропусков.

Комментарии

Для использования пользовательского метода свойство IMsCrossDimensionAggregationOptions.UseFillGaps должно иметь значение True.

Первым параметром пользовательского метода должен передаваться ряд, представленный интерфейсом ITimeSeries. Остальные параметры опциональные их значения задаются через свойство IMsCrossDimensionAggregationOptions.FillGapsUserMethodParams. Метод должен возвращать значение ITimeSeries приведенные к типу Variant.

Пример

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «OBJ_RUBRICATOR», в контейнере моделирования которой содержится модель расширенной агрегации с идентификатором «MODEL_AGGR». Также в репозитории должна присутствовать область глобальных параметров с идентификатором «SHARED_P», содержащая следующий метод с ключом «1»:

Public Function FillGaps(Input: ITimeSeries; SpecValue: Double): Variant;
Var
    i: Integer;
Begin
    For i := Input.StartIndex To Input.EndIndex Do
        If Double.IsNan(Input.Item(i)) Then
            Input.Item(i) := SpecValue;
        End If;
    End For;
    Return Input;
End Function FillGaps;

Перед выполнением примера необходимо добавить ссылки на системные сборки «Metabase», «Cubes», «Ms», «Fore».

    Sub UserProc;
    Var
        Mb: IMetabase;
        Rubr: IRubricator;
        MsDescr: IMetabaseObjectDescriptor;
        Model: IMsModel;
        ModelFormula: IMsFormula;
        CrossDimAggr: IMsCrossDimensionAggregationTransform;
        AggrOptions: IMsCrossDimensionAggregationOptions;
        Shp: ISharedParams;
        ShMethod: IForeMethod;
        MetodParams: IMsUserMethodParams;
    Begin
        Mb := MetabaseClass.Active;
        Rubr := Mb.ItemById("OBJ_RUBRICATOR").Bind As IRubricator;
        MsDescr := Rubr.ModelSpace;
        Model := Mb.ItemByIdNamespace("MODEL_AGGR", MsDescr.Key).Edit As IMsModel;
        ModelFormula := Model.Transform.FormulaItem(0);
        CrossDimAggr := ModelFormula.Method As IMsCrossDimensionAggregationTransform;
        AggrOptions := CrossDimAggr.Options;
        Shp := mb.ItemById("SHARED_P").Edit As ISharedParams;
        ShMethod := Shp.Methods.FindByKey(1);
        AggrOptions.FillGapsUserMethod := ShMethod;
        MetodParams := AggrOptions.FillGapsUserMethodParams;
        MetodParams.Item(1).Value := 10;
        AggrOptions.UseFillGaps := True;
        (Model As IMetabaseObject).Save;
    End Sub UserProc;

После выполнения примера модель расчета расширенной агрегации будет использовать пользовательский метод обработки пропусков.

См. также:

IMsCrossDimensionAggregationOptions