IAdoMdCubeExecutor.OpenCellset

Синтаксис Fore

OpenCellset: IAdoMdCellset;

Синтаксис Fore.NET

OpenCellset: Prognoz.Platform.Interop.AdoMd.IAdoMdCellset;

Описание

Метод OpenCellset возвращает аналитические данные, полученные в результате выполнения произвольного MDX-запроса к кубу.

Пример Fore

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

Sub UserProc;
Var
    MB: IMetabase;
    CubInst: ICubeInstance;
    CubDest: ICubeInstanceDestination;
    ExeCub: ICubeInstanceDestinationExecutor;
    ExeAdo: IAdoMdCubeExecutor;
    sMDX: String;
    Cellset: IAdoMdCellset;
    AxisInfo: IAdoMdAxisInfo;
    Axis: IAdoMdAxis;
    Dim: IAdoMdAxisDim;
    i, j: Integer;
Begin
    MB := MetabaseClass.Active;
    //Открываем куб ADOMD
    CubInst := MB.ItemByIdNamespace("Cube_1", MB.GetObjectKeyById("ADOMDTest")).Open(NullAs ICubeInstance;
    CubDest := CubInst.Destinations.DefaultDestination;
    //Создаем вычислитель
    ExeCub := CubDest.CreateExecutor;
    ExeAdo := ExeCub As IAdoMdCubeExecutor;
    //Указываем MDX-запрос
    sMDX := "SELECT ...";
    ExeAdo.MdxQuery := sMdx;
    //Получение аналитических данных в соответствии с указанным запросом
    Cellset := ExeAdo.OpenCellset;
    AxisInfo := Cellset.AxisInfo;
    Debug.WriteLine("Количество осей: " + AxisInfo.Count.ToString);
    For i := 0 To AxisInfo.Count - 1 Do
        Debug.WriteLine("Ось: " + i.ToString);
        Axis := AxisInfo.Item(i);
        Debug.WriteLine("Количество измерений: " + Axis.DimCount.ToString);
        For j := 0 To Axis.DimCount - 1 Do
            Dim := Axis.Dim(j);
            Debug.Indent;
            Debug.WriteLine("Измерение: " + Dim.Name + "; (Количество атрибутов: " + Dim.Cols.ToString + ")");
            Debug.WriteLine("Количество элементов в измерении:" + Dim.Instance.Elements.Count.ToString);
            Debug.Unindent;
        End For;
    End For;
End Sub UserProc;

При выполнении примера будет выполнен многомерный запрос к указанному кубу ADOMD. Из результата выполнения будет получена информация об осях, по которым сформированы данные. В консоль среды разработки будет выведена информация по всем осям: количество и наименования измерений, которые использованы для составления координат оси, и количество атрибутов каждого измерения, которые описывают каждую координату.

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.AdoMd;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Metabase;

Public Shared Sub Main(Params: StartParams);
Var
    MB: IMetabase;
    CubInst: ICubeInstance;
    CubDest: ICubeInstanceDestination;
    ExeCub: ICubeInstanceDestinationExecutor;
    ExeAdo: IAdoMdCubeExecutor;
    sMDX: String;
    Cellset: IAdoMdCellset;
    AxisInfo: IAdoMdAxisInfo;
    Axis: IAdoMdAxis;
    Dim: IAdoMdAxisDim;
    i, j: Integer;
Begin
    MB := Params.Metabase;
    //Открываем куб ADOMD
    CubInst := MB.ItemByIdNamespace["Cube_1", MB.GetObjectKeyById("ADOMDTest")].Open(NullAs ICubeInstance;
    CubDest := CubInst.Destinations.DefaultDestination;
    //Создаем вычислитель
    ExeCub := CubDest.CreateExecutor();
    ExeAdo := ExeCub As IAdoMdCubeExecutor;
    sMDX := "SELECT...";
    ExeAdo.MdxQuery := sMdx;
    //Получение аналитических данных в соответствии с указанным запросом
    Cellset := ExeAdo.OpenCellset();
    AxisInfo := Cellset.AxisInfo;
    System.Diagnostics.Debug.WriteLine("Количество осей: " + AxisInfo.Count.ToString());
    For i := 0 To AxisInfo.Count - 1 Do
        System.Diagnostics.Debug.WriteLine("Ось: " + i.ToString());
        Axis := AxisInfo.Item[i];
        System.Diagnostics.Debug.WriteLine("Количество измерений: " + Axis.DimCount.ToString());
        For j := 0 To Axis.DimCount - 1 Do
            Dim := Axis.Dim[j];
            System.Diagnostics.Debug.Indent();
            System.Diagnostics.Debug.WriteLine("Измерение: " + Dim.Name + "; (Количество атрибутов: " + Dim.Cols.ToString() + ")");
            System.Diagnostics.Debug.WriteLine("Количество элементов в измерении:" + Dim.Instance.Elements.Count.ToString());
            System.Diagnostics.Debug.Unindent();
        End For;
    End For;
End Sub;

См. также:

IAdoMdCubeExecutor