IMatrixDataSourceExecutorCache.Execute

Синтаксис Fore

Execute(Dimensions: IDimSelectionSet): IMatrix;

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

Execute(Dimensions: Prognoz.Platform.Interop.Dimensions.IDimSelectionSet): Prognoz.Platform.Interop.Matrix.IMatrix;

Параметры

Dimensions. Отметка, в соответствии с которой, будет производиться расчет матрицы.

Описание

Метод Execute осуществляет проверку наличия данных в кэше и возвращает результирующую матрицу кэшированных данных.

Комментарии

При выполнении данного метода происходит проверка наличия в кэше данных, соответствующих указанной отметке. Отсутствующие данные будут извлечены с сервера и добавлены в кэш. Результатом работы метода Execute является ссылка на результирующую матрицу всех данных, помещенных в кэш. Если кэш пуст, либо дополнить его невозможно, то метод Execute отработает как метод IMatrixDataSourceExecutor.Execute.

Данный метод также учитывает установленные параметры  расчета результирующей матрицы.

Пример Fore

Для выполнения примера предполагается наличие формы и расположенных на ней кнопок с наименованиями «Button1» и «Button2». В репозитории имеется куб с идентификатором «Cube_1». В качестве измерений данного куба выступают справочники с идентификаторами «Dim_1» и «Dim_2».

Class TESTForm: Form
    Button1: Button;
    Button2: Button;
    DimSS: IDimSelectionSet;
    MatrCache: IMatrixDataSourceExecutorCache;
    Matr: IMatrix;
    
    Sub TESTFormOnCreate(Sender: Object; Args: IEventArgs);
    Var
        MB: IMetabase;
        CubeInst: ICubeInstance;
        MatrDS: IMatrixDataSource;
        MatrExecutor: IMatrixDataSourceExecutor;
    Begin
        MB := MetabaseClass.Active;
        CubeInst := MB.ItemById("Cube_1").Open(NullAs ICubeInstance;
        MatrDS := CubeInst.Destinations.DefaultDestination As IMatrixDataSource;
        MatrExecutor := MatrDS.CreateExecutor;
        MatrCache := MatrExecutor.CreateCache;
        DimSS := MatrDS.CreateDimSelectionSet;
    End Sub TESTFormOnCreate;

    Sub Button1OnClick(Sender: Object; Args: IMouseEventArgs);
    Begin
        DimSS.FindById("Dim_1")...; //Установка отметки по измерению Dim_1
        DimSS.FindById("Dim_2")...; //Установка отметки по измерению Dim_2
        Matr := MatrCache.Execute(DimSS);
    End Sub Button1OnClick;

    Sub Button2OnClick(Sender: Object; Args: IMouseEventArgs);
    Begin
        If MatrCache <> Null Then
            MatrCache.Flush;
        End If;
    End Sub Button2OnClick;

End Class TESTForm;

При создании формы будет открыт указанный куб. Куб будет представлен как многомерный источник данных. Для работы с данными куба будет создан кэш. При нажатии на кнопку «Button1» в соответствии с установленной отметкой производится расчет результирующей матрицы куба. При расчете будут использоваться кэшированные данные. В переменной «Matr» будет доступна матрица кэшированных данных. Кнопка «Button2» позволяет очистить кэш данных.

Пример Fore.NET

Для выполнения примера предполагается наличие формы и расположенных на ней кнопок с наименованиями «Button1» и «Button2». В репозитории имеется куб с идентификатором «Cube_1». В качестве измерений данного куба выступают справочники с идентификаторами «Dim_1» и «Dim_2».

Imports System;
Imports System.Collections.Generic;
Imports System.ComponentModel;
Imports System.Data;
Imports System.Drawing;
Imports System.Text;
Imports System.Windows.Forms;
Imports Prognoz.Platform.Forms.Net;
Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.Dimensions;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Metabase;

Public Partial Class TESTForm: Prognoz.Platform.Forms.Net.ForeNetForm
    DimSS: IDimSelectionSet;
    MatrCache: IMatrixDataSourceExecutorCache;
    Matr: IMatrix;
    
    Public Constructor TESTForm();
    Begin
        InitializeComponent();
    End Constructor;

    Private Sub TESTForm_Load(sender: System.Object; e: System.EventArgs);
    Var
        MB: IMetabase;
        CubeInst: ICubeInstance;
        MatrDS: IMatrixDataSource;
        MatrExecutor: IMatrixDataSourceExecutor;
    Begin
        MB := Self.Metabase;
        CubeInst := MB.ItemById["Cube_1"].Open(NullAs ICubeInstance;
        MatrDS := CubeInst.Destinations.DefaultDestination As IMatrixDataSource;
        MatrExecutor := MatrDS.CreateExecutor(0);
        MatrCache := MatrExecutor.CreateCache();
        DimSS := MatrDS.CreateDimSelectionSet();
    End Sub;

    Private Sub button1_Click(sender: System.Object; e: System.EventArgs);
    Begin
        DimSS.FindById("Dim_1")...; //Установка отметки по измерению Dim_1
        DimSS.FindById("Dim_2")...; //Установка отметки по измерению Dim_2
        Matr := MatrCache.Execute(DimSS);
    End Sub;

    Private Sub button2_Click(sender: System.Object; e: System.EventArgs);
    Begin
        If MatrCache <> Null Then
            MatrCache.Flush();
        End If;
    End Sub;

End Class;

При создании формы будет открыт указанный куб. Куб будет представлен как многомерный источник данных. Для работы с данными куба будет создан кэш. При нажатии на кнопку «Button1» в соответствии с установленной отметкой производится расчет результирующей матрицы куба. При расчете будут использоваться кэшированные данные. В переменной «Matr» будет доступна матрица кэшированных данных. Кнопка «Button2» позволяет очистить кэш данных.

См. также:

IMatrixDataSourceExecutorCache