IMsCrossDimensionAggregationTransform.MissingData

Синтаксис Fore

MissingData: IMissingData;

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

MissingData: Prognoz.Platform.Interop.Stat.IMissingData;

Описание

Свойство MissingData возвращает параметры метода обработки пропусков.

Комментарии

Свойство устарело, используйте IMsCrossDimensionAggregationTransform.AppliesToExpression.

Пример Fore

Для выполнения примера предполагается наличие формы, расположенной на ней кнопки с идентификатором «Button1», компонента LanerBox с идентификатором «LanerBox1» и компонента UiErAnalyzer, являющегося источником данных для LanerBox. В UiErAnalyzer должна быть загружена рабочая книга базы данных временных рядов. «COUNTRY» (страна) и «INDICATOR» (показатель) - атрибуты показателей базы, ссылающиеся на справочники.

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

Пример является обработчиком события OnClick для кнопки «Button1».

Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
Var
    mb: IMetabase;
    Laner: ILaner;
    CalcSerie: ILanerCalculateSerie;
    Transform: IMsFormulaTransform;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    Method: IMsMethod;
    Aggr: IMsCrossDimensionAggregationTransform;
    TransformVar: IMsFormulaTransformVariable;
    Options: IMsCrossDimensionAggregationOptions;
    FilterList: IMsAggregationFilterList;
    Filter: IMsAggregationFilter;
    Rubr: IRubricator;
    Attributes: IMetaAttributes;
    DictDescr: IMetabaseObjectDescriptor;
    FilterDimension: IMetabaseObject;
    DimInst: IDimInstance;
    Selection: IDimSelection;
    i: Integer;
    MissingData: IMissingData;
Begin
    mb := MetabaseClass.Active;
    Laner := UiErAnalyzer1.ErAnalyzer.Laner;
    CalcSerie := Laner.Series.AddCalculateSerie("Aggregation");
    Transform := CalcSerie.Transform.Transform As IMsFormulaTransform;
    Selector := Transform.CreateSelector;
    TransformVar := Transform.Outputs.Item(0);
    Selector.Slice := TransformVar.Slices.Add(Null);
    Formula := Transform.Transform(Selector);
    Formula.Kind := MsFormulaKind.CrossDimensionAggregation;
    Method := Formula.Method;
    // Настройка агрегации
    Aggr := Method As IMsCrossDimensionAggregationTransform;
    // Задаем метод агрегации
    Aggr.AgregationMethod := MsAgregationMethodType.Sum;
    // Определяем дополнительные параметры агрегации
    Options := Aggr.Options;
    Options.Threshold := 0;
    Options.Level := False;
    Options.Rebase := False;
    // Настраиваем фильтр агрегации
    FilterList := Aggr.Filter;
    FilterList.Clear;
    Rubr := Laner.RubricatorInstance.Rubricator;
    Attributes := Rubr.Facts.Attributes;
    DictDescr := Attributes.FindById("COUNTRY").ValuesObject;
    Filter := FilterList.Add(DictDescr.Bind As IDimensionModel);
    FilterDimension := Filter.FilterDimension As IMetabaseObject;
    DimInst := FilterDimension.Open(NullAs IDimInstance;
    Selection := DimInst.CreateSelection;
    For i := 0 To 5 Do
        Selection.SelectElement(i, False);
    End For;
    Filter.AggregationSelection := Selection;
    // Задаем измерение, по которому ведется агрегация
    DictDescr := Attributes.FindById("INDICATOR").ValuesObject;
    Aggr.AggregationDimenson := DictDescr.Bind As IDimensionModel;
    // Задаем выражение агрегации
    Aggr.Expression.AsString := "BCA";
    // Задаем метод обработки пропусков
    MissingData := Aggr.MissingData;
    MissingData.Method := MissingDataMethod.Casewise;
    LanerBox1.ExecuteOperation(LanerBoxOperation.Refresh);
End Sub Button1OnClick;

После выполнения примера в компонент LanerBox будет добавлен вычисляемый ряд «Aggregation», рассчитанный методом агрегации. Агрегация будет рассчитана как сумма значений показателя «BCA» для первых шести стран справочника, на который ссылается атрибут «COUNTRY». Расчеты будут производиться без учета отсутствующих значений ряда. Например:

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore. Вместо компонентов Fore используйте их Fore.NET аналоги.

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Express;
Imports Prognoz.Platform.Interop.Laner;
Imports Prognoz.Platform.Interop.Ms;
Imports Prognoz.Platform.Interop.Rds;
Imports Prognoz.Platform.Interop.Stat;

Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
Var
    mb: IMetabase;
    Laner: ILaner;
    CalcSerie: ILanerCalculateSerie;
    Transform: IMsFormulaTransform;
    Selector: IMsFormulaTransformSelector;
    Formula: IMsFormula;
    Method: IMsMethod;
    Aggr: IMsCrossDimensionAggregationTransform;
    TransformVar: IMsFormulaTransformVariable;
    Options: IMsCrossDimensionAggregationOptions;
    FilterList: IMsAggregationFilterList;
    Filter: IMsAggregationFilter;
    Rubr: IRubricator;
    Attributes: IMetaAttributes;
    DictDescr: IMetabaseObjectDescriptor;
    FilterDimension: IMetabaseObject;
    DimInst: IDimInstance;
    Selection: IDimSelection;
    i: uinteger;
    MissingData: IMissingData;
Begin
    mb := Self.Metabase;
    Laner := uiErAnalyzerNet1.ErAnalyzer.ErAnalyzer.Laner;
    CalcSerie := Laner.Series.AddCalculateSerie("Aggregation", DimCalendarLevel.dclNone, -1);
    Transform := CalcSerie.Transform.Transform As IMsFormulaTransform;
    Selector := Transform.CreateSelector();
    TransformVar := Transform.Outputs.Item[0];
    Selector.Slice := TransformVar.Slices.Add(Null);
    Formula := Transform.Transform[Selector];
    Formula.Kind := MsFormulaKind.mfkCrossDimensionAggregation;
    Method := Formula.Method;
    // Настройка агрегации
    Aggr := Method As IMsCrossDimensionAggregationTransform;
    // Задаем метод агрегации
    Aggr.AgregationMethod := MsAgregationMethodType.mammtSum;
    // Определяем дополнительные параметры агрегации
    Options := Aggr.Options;
    Options.Threshold := 0;
    Options.Level := False;
    Options.Rebase := False;
    // Настраиваем фильтр агрегации
    FilterList := Aggr.Filter;
    FilterList.Clear();
    Rubr := Laner.RubricatorInstance.Rubricator;
    Attributes := Rubr.Facts.Attributes;
    DictDescr := Attributes.FindById("COUNTRY").ValuesObject;
    Filter := FilterList.Add(DictDescr.Bind() As IDimensionModel);
    FilterDimension := Filter.FilterDimension As IMetabaseObject;
    DimInst := FilterDimension.Open(NullAs IDimInstance;
    Selection := DimInst.CreateSelection();
    For i := 0 To 5 Do
        Selection.SelectElement(i, False);
    End For;
    Filter.AggregationSelection := Selection;
    // Задаем измерение, по которому ведется агрегация
    DictDescr := Attributes.FindById("INDICATOR").ValuesObject;
    Aggr.AggregationDimenson := DictDescr.Bind() As IDimensionModel;
    // Задаем выражение агрегации
    Aggr.Expression.AsString := "BCA";
    // Задаем метод обработки пропусков
    MissingData := Aggr.MissingData;
    MissingData.Method := MissingDataMethod.mdmCasewise;
    lanerBoxNet1.CtrlBox.ExecuteOperation(LanerBoxOperation.lboRefresh, Null);
End Sub;

См. также:

IMsCrossDimensionAggregationTransform