SkipIfWholeWeightIsEmpty: Boolean;
SkipIfWholeWeightIsEmpty: boolean;
Свойство SkipIfWholeWeightIsEmpty определяет, исключать ли ряд из агрегации, если все веса для него пустые.
Значение по умолчанию False.
При значении True ряд будет исключен из агрегации, если все веса для него пустые; False - ряд учитывается при расчете агрегации независимо от значения весов.
Веса учитываются, если расчет ведется методом взвешенной агрегации, например, взвешенная сумма. Если имеются пустые значения веса, то результат агрегации будет пустой.
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «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;
После выполнения примера будут изменены параметры расчета расширенной агрегации:
ряды со всеми пустыми весами будут исключены из расчета агрегации;
ряды, которые имеют пропуски в значениях весов, будут исключены из расчета агрегации;
для заполнения пропусков в данных порога расчета агрегации будет использоваться значение «0»;
агрегация будет рассчитываться на общем периоде данных;
минимальное количество наблюдений в общем периоде - пять.
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «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.
См. также: