Include(SourceLevel: IDimLevel): Boolean;
SourceLevel. Уровень-источник, данные с которого необходимо использовать при агрегации.
Свойство Include определяет, будут ли при агрегации использоваться данные уровня, передаваемого посредством входного параметра.
Если свойству установлено значение True, то данные уровня SourceLevel будут использоваться при агрегации, иначе не будут. Свойство актуально, если свойствам UseDefaultLevelAggregation и IncludeChildren установлено значение False.
Для выполнения примера предполагается наличие в репозитории куба с идентификатором "Cube_1". В кубе имеется измерение "D_TO", содержащее более двух уровней.
Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase.
Sub UserProc;
Var
MB: IMetabase;
MObj: IMetabaseObject;
StdCube: IStandardCube;
Man: IMatrixAggregatorManager;
Dim: IStandardCubeDimension;
Lvl: IDimLevels;
BasicAggr: IBasicMatrixAggregator;
LevAggr: IBasicMatrixLevelAggregator;
Dest: IStandardCubeDestination;
Begin
MB := MetabaseClass.Active;
MObj := MB.ItemById("CUBE_1").Edit;
StdCube := MObj As IStandardCube;
//Создаем новый агрегатор
Man := New MatrixAggregatorManager.Create As IMatrixAggregatorManager;
//Основной механизм агрегации
BasicAggr := Man.CreateAggregator("BasicMatrixAggregator") As IBasicMatrixAggregator;
//Для измерения D_TO
Dim := StdCube.Destinations.Item(0).Dimensions.FindById("D_TO");
Lvl := Dim.Dimension.Levels;
BasicAggr.Dimension := Dim.Dimension;
//Для уровня по умолчанию
LevAggr := BasicAggr.DefaultLevelAggregation;
LevAggr.Operation := BasicAggregatorOperation.ArithmeticalMean;
LevAggr.PreserveExistingData := True;
LevAggr.PreserveMethod := ExistingDataPreserveMethod.OnNull;
//Для второго уровня
//Уровень-приемник
LevAggr := BasicAggr.LevelAggregation(Lvl.Item(Lvl.Count - 2));
LevAggr.UseDefaultLevelAggregation := False;
//Метод - Фактическое среднее
LevAggr.Operation := BasicAggregatorOperation.ActualMean;
//Уровень-источник
LevAggr.Include(Lvl.Item(Lvl.Count - 1)) := True;
//Установка агрегации по первому элементу измерения фактов
Dest := StdCube.Destinations.Item(0);
Dim.Aggregator(1, Dest) := BasicAggr;
MObj.Save;
End Sub UserProc;
После выполнения примера в кубе будет настроена агрегация для измерения "D_TO". Для уровней по умолчанию будет осуществляться агрегация с использованием арифметического среднего. Неагрегированные данные будут сохраняться, если результат не пустое значение. Для предпоследнего уровня будут установлены собственные настройки. Будет осуществляться агрегация данных с последнего уровня, с использованием метода фактического среднего.
См.также: