IMsCrossDimensionAggregationOptions.SkipIfWholeWeightIsEmpty

Синтаксис Fore

SkipIfWholeWeightIsEmpty: Boolean;

Синтаксис Fore.NET

SkipIfWholeWeightIsEmpty: boolean;

Описание

Свойство SkipIfWholeWeightIsEmpty определяет, исключать ли ряд из агрегации, если все веса для него пустые.

Комментарии

Значение по умолчанию False.

При значении True ряд будет исключен из агрегации, если все веса для него пустые; False - ряд учитывается при расчете агрегации независимо от значения весов.

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

Пример Fore

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «TSDB», в контейнере моделирования которой содержится модель расширенной агрегации с идентификатором «MODEL_AGGR». Модель рассчитывается методом взвешенной агрегации.

Добавьте ссылки на системные сборки «Metabase», «Cubes», «Ms».

Sub UserProc;
Var
    Mb: IMetabase;
    Rubr: IRubricator;
    MsDescr: IMetabaseObjectDescriptor;
    Model: IMsModel;
    ModelFormula: IMsFormula;
    CrossDimAggr: IMsCrossDimensionAggregationTransform;
    AggrOptions: IMsCrossDimensionAggregationOptions;
Begin
    Mb := MetabaseClass.Active;
    Rubr := Mb.ItemById("TSDB").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;
    // Исключаем из агрегации ряды со всеми пустыми весами
    AggrOptions.SkipIfWholeWeightIsEmpty := True;
    // Задаем значения для заполнения пропусков в данных порога расчета агрегации
    AggrOptions.TreatEmptyCompositionRelevanceAs := 0;
    // Исключаем из агрегации ряды, которые имеют пропуски в значениях весов
    AggrOptions.TreatEmptyWeightsAs := 0;
    // Указываем, что рассчитываем агрегацию на общем периоде данных
    AggrOptions.UseCommon := True;
    { Накладываем ограничение на минимальное количество наблюдений
    в общем периоде данных - пять значений}

    AggrOptions.UseNumObservations := True;
    AggrOptions.NumObservations := 5;
    // Сохраняем изменения параметров модели
    (Model As IMetabaseObject).Save;
End Sub UserProc;

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

Пример Fore.NET

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «TSDB», в контейнере моделирования которой содержится модель расширенной агрегации с идентификатором «MODEL_AGGR». Модель рассчитывается методом взвешенной агрегации.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    Mb: IMetabase;
    Rubr: IRubricator;
    MsDescr: IMetabaseObjectDescriptor;
    Model: IMsModel;
    ModelFormula: IMsFormula;
    CrossDimAggr: IMsCrossDimensionAggregationTransform;
    AggrOptions: IMsCrossDimensionAggregationOptions;
Begin
    Mb := Params.Metabase;
    Rubr := Mb.ItemById["TSDB"].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;
    // Исключаем из агрегации ряды со всеми пустыми весами
    AggrOptions.SkipIfWholeWeightIsEmpty := True;
    // Задаем значения для заполнения пропусков в данных порога расчета агрегации
    AggrOptions.TreatEmptyCompositionRelevanceAs := 0;
    // Исключаем из агрегации ряды, которые имеют пропуски в значениях весов
    AggrOptions.TreatEmptyWeightsAs := 0;
    // Указываем, что рассчитываем агрегацию на общем периоде данных
    AggrOptions.UseCommon := True;
    { Накладываем ограничение на минимальное количество наблюдений
    в общем периоде данных - пять значений}

    AggrOptions.UseNumObservations := True;
    AggrOptions.NumObservations := 5;
    // Сохраняем изменения параметров модели
    (Model As IMetabaseObject).Save();
End Sub;

Результат выполнения примера совпадает с результатом примера Fore.

См. также:

IMsCrossDimensionAggregationOptions