IMsCrossDimensionAggregationOptions.FillGapsUserMethod

Синтаксис

FillGapsUserMethod: IForeMethod;

Описание

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

Комментарии

Первым параметром пользовательского метода должен передаваться ряд, представленный интерфейсом 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