IStandardCubeServerDimensionSet.CalcTotal

Синтаксис

CalcTotal: Boolean;

Описание

Свойство CalcTotal определяет, рассчитывать ли итоги для группы измерений.

Комментарии

Возможные значения:

Пример

Для выполнения примера предполагается наличие в репозитории стандартного куба с идентификатором «OBJ_CUBE». В данном кубе должно присутствовать два измерения.

Sub Main;

Var

MB: IMetabase;

MObj: IMetabaseObject;

StandCub: IStandardCube;

CubeInst: ICubeInstance;

CubeStandInst: IStandardCubeInstance;

Aggregator: IStandardCubeServerAggregator;

StdDim: IStandardCubeDimension;

StdDims: IStandardCubeDimensions;

Aggregation: IStandardCubeServerAggregation;

FactDimension: IDimInstance;

Iter: IDimIterator;

DimSet: IStandardCubeServerDimensionSet;

AggDims: IStandardCubeServerAggregationDimensions;

MatrDS: IMatrixDataSource;

DimSS: IDimSelectionSet;

Matr: IMatrix;

Coord: IMatrixCoord;

i: Integer;

MatrIter: IMatrixIterator;

s: String;

Begin

MB := MetabaseClass.Active;

MObj := MB.ItemById("OBJ_CUBE").Bind;

StandCub := MObj As IStandardCube;

CubeInst := MObj.Open(Null) As ICubeInstance;

CubeStandInst := CubeInst As IStandardCubeInstance;

StdDims := StandCub.Dimensions;

 

// Настройка метода агрегации

Aggregator := CubeStandInst.CreateAggregator;

FactDimension := StandCub.FactDimension.OpenDimension;

Iter := FactDimension.Elements.Elements.Iterator;

Iter.First;

While Iter.Next Do

Aggregation := Aggregator.Aggregations.Add;

Aggregation.AggregationType := CubeFactBindingAggregationType.Sum;

Aggregation.FactKey := FactDimension.Indexes.PrimaryIndex.IndexAttributesValues(Iter.Element);

End While;

 

// Определение измерений для агрегации

DimSet := Aggregator.DimensionSets.Add;

DimSet.CalcOther := True;

StdDim := StdDims.Item(1);

AggDims := DimSet.Dimensions;

AggDims.Add(StdDim);

AggDims.CalcOther(0) := True;

DimSet := Aggregator.DimensionSets.Add;

DimSet.CalcTotal := True;

StdDim := StdDims.Item(2);

AggDims := DimSet.Dimensions;

AggDims.Add(StdDim);

AggDims.CalcTotal(0) := True;

 

// Отметка для расчета агрегации

MatrDS := CubeInst.Destinations.DefaultDestination As IMatrixDataSource;

DimSS := MatrDS.CreateDimSelectionSet;

For i := 0 To DimSS.Count - 1 Do

DimSS.Item(i).SelectAll;

End For;

 

// Расчет агрегации

Matr := Aggregator.Execute(DimSS);

 

// Вывод результатов агрегации

MatrIter := Matr.CreateIterator;

MatrIter.Move(IteratorDirection.First);

If MatrIter.Valid Then

For i := 0 To StdDims.Count - 1 Do

StdDim := StdDims.Item(i);

If StdDim.FactDimension Then

Debug.Write("Факт   ");

Else

Debug.Write(StdDim.OpenDimension.Name + "  ");

End If;

End For;

Debug.Write("Агрегация  ");

Debug.WriteLine("Значение");

 

Coord := Matr.CreateCoord;

While MatrIter.Valid Do

MatrIter.PutCurrentPos(Coord);

s := "";

For i := 0 To Coord.Count - 1 Do

s := s + Coord.Item(i).ToString + "       ";

End For;

s := s + "= " + MatrIter.Value;

Debug.WriteLine(s);

MatrIter.Move(IteratorDirection.Next);

End While;

Else

Debug.WriteLine("Данные отсутствуют");

End If;

End Sub Main;

После выполнения примера для фактов куба будет рассчитана сумма по измерениям. Матрица расчета будет выведена в окно консоли.

Смотреть результаты

См. также:

IStandardCubeServerDimensionSet