IInMemManager.GetAssociatedSelection

Синтаксис

GetAssociatedSelection(MatrixInMem: IMatrix; InSelectionSet: IDimSelectionSet; OutDimension: IDimInstance): IDimSelection;

Параметры

MatrixInMem. Прокешированная матрица файлового кеша;

InSelectionSet. Отметка по измерениям матрицы, по которой производится запрос;

OutDimension. Измерение, по которому запрашивается отметка;

Описание

Метод GetAssociatedSelection формирует отметку элементов, ассоциативно связанную с элементами входной отметки.

Пример

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

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

Sub UserProc;
Var
    Mb: IMetabase;
    CubeInst: ICubeInstance;
    DestInst: ICubeInstanceDestination;
    DimSS, DimSSOut: IDimSelectionSet;
    DimS, DimOut: IDimSelection;
    DimAnalyse: IDimInstance;
    Matr: IMatrix;
    InMem: IInMemManager;
Begin
    Mb := MetabaseClass.Active;
    // Открытие куба
    CubeInst := Mb.ItemById("CUBE").Open(NullAs ICubeInstance;
    DestInst := CubeInst.Destinations.DefaultDestination;
    // Отметка, в соответствии с которой осуществляется работа - полная для получения матрицы из кеша
    DimSS := DestInst.CreateDimSelectionSet;
    For Each DimS In DimSS Do
        DimS.SelectAll;
    End For;

    // Инициализация менеджера для работы с кешем
    InMem := New InMemManager.Create;
    // Проверка наличия данных в кеше
    If InMem.CheckHasMatrix(DestInst) Then
        // Получение матрицы с данными
        Matr := InMem.GetMatrix(DestInst.CreateExecutor, DimSS);
        Debug.WriteLine("Точек в кеш: " + Matr.Count.ToString);
        // Анализ по отметке одного измерению
        Debug.WriteLine("Анализ по одному измерению куба:");
        DimAnalyse := DimSS.Item(0).Dimension;
        DimOut := Inmem.GetAssociatedSelection(Matr, DimSS, DimAnalyse);
        Debug.WriteLine(String.Format("Справочник: {0}, всего элементов {1}, элементы со значениями в матрице: {2}",
                                        DimAnalyse.Name, DimAnalyse.Elements.Count, DimOut.ToString));

        // Анализ по полной отметке
        Debug.WriteLine("Анализ по всем измерениям куба:");
        DimSSOut := DimSS.CreateCopy;
        Inmem.GetAssociatedSelectionSet(Matr, DimSS, DimSSOut);
        For Each DimOut In DimSSOut Do
            DimAnalyse := DimOut.Dimension;
            Debug.WriteLine(String.Format("Справочник: {0}, всего элементов {1}, элементы со значениями в матрице: {2}",
                                        DimAnalyse.Name, DimAnalyse.Elements.Count, DimOut.ToString));
        End For;
    Else
        Debug.WriteLine("Куб не кеширован");
    End If;
End Sub UserProc;

При выполнении примера в окно консоли будет выведено количество точек в кеше, количество элементов и элементы со значениями в матрице для одного измерения и для всех измерений куба.

См. также:

IInMemManager