ICubeInstanceDestinationExecutor.ExcludeDimensions

Синтаксис

ExcludeDimensions(AggregationOperation: BasicAggregatorOperation; ExcludedDimensions: IDimensionSet; [OpenSelection: IDimSelectionSet = Null]);

Параметры

AggregationOperation. Метод расчёта агрегации;

ExcludedDimensions. Измерения, для которых применяется агрегация;

OpenSelection. Отметка, по которой будет осуществляться расчёт куба.

Описание

Метод ExcludeDimensions исключает измерения из куба для получения свёрточной матрицы.

Комментарии

Для проверки возможности использования механизма свёрток для источника используйте метод IInMemManager.CanExcludeDimensions.

Пример

Для выполнения примера в репозитории предполагается наличие в репозитории куба с идентификатором CUBE, у которого есть минимум два измерения. Для куба включено использование свёрток, и он прокеширован.

Добавьте ссылки на системные сборки: Cubes, Dimensions, Matrix, Metabase.

Sub UserProc;
Var
    MB: IMetabase;
    CubeInst: ICubeInstance;
    Dest: ICubeInstanceDestination;
    sFactory: IDimSelectionsetFactory;
    Sels: IDimSelectionSet;
    sel: IDimSelection;
    ExcludedDims: IDimensionSet;
    Exec: ICubeInstanceDestinationExecutor;
    MatrExec: IMatrixDataSourceExecutor;
    InMem: IInMemManager;
    matr: IMatrix;
Begin
    MB := MetabaseClass.Active;
    // Открытие куба и получение представления по умолчанию
    CubeInst := MB.ItemById("CUBE").Open(NullAs ICubeInstance;
    Dest := CubeInst.Destinations.DefaultDestination;
    // Получение отметки
    Sels := Dest.CreateDimSelectionSet;
    For Each sel In Sels Do
        sel.SelectAll;
    End For;

    // Настройки для расчёта
    MatrExec := (Dest As IMatrixDataSource).CreateExecutor;
    Exec := MatrExec As ICubeInstanceDestinationExecutor;
    // Инициализация менеджера для работы с кешем
    InMem := New InMemManager.Create;
    // Проверка возможности использования механизма свёрток
    If InMem.CanExcludeDimensions(Exec, Sels) Then
        // Создание набора измерений, которые будут фиксированы и исключены из расчета
        sFactory := New DimSelectionSetFactory.Create;
        ExcludedDims := sFactory.CreateDimensionSet;
        // Добавление первых двух измерений куба
        ExcludedDims.Add(Sels.Item(0).Dimension.Dimension);
        ExcludedDims.Add(Sels.Item(1).Dimension.Dimension);
        // Исключение выбранных измерений с агрегацией суммированием
        Exec.ExcludeDimensions(BasicAggregatorOperation.Sum, ExcludedDims, Sels);
    Else
        Debug.WriteLine("Невозможно использовать механизм исключения измерений");
    End If;

    // Расчёт матрицы со сверткой
    matr := matrExec.Execute(sels);
    Debug.WriteLine("Выполнение свёртки, точек в матрице: " + matr.Count.ToString);

    // Расчёт матрицы без свёртки
    Exec := Dest.CreateExecutor;
    Exec.PrepareExecute(Sels);
    Exec.PerformExecute;
    matr := Exec.Matrix;
    Debug.WriteLine("Всего точек в кубе: " + matr.Count.ToString);
End Sub UserProc;

При выполнении примера будет выполнена проверка возможности использования свётрок, будут исключены первые два измерения и получена свёртка.

См. также:

ICubeInstanceDestinationExecutor