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(Null) As 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;
При выполнении примера в окно консоли будет выведено количество точек в кеше, количество элементов и элементы со значениями в матрице для одного измерения и для всех измерений куба.
См. также: