IValidationExecuteSettings.DataMatrix

Синтаксис Fore

DataMatrix: IMatrix;

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

DataMatrix: Prognoz.Platform.Interop.Matrix.IMatrix;

Описание

Свойство DataMatrix определяет матрицу данных, по которой будет рассчитана валидация.

Комментарии

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

Пример Fore

Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «TSDB», содержащей правило валидации с идентификатором «NAMBCOMP_VALIDATION».

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

Sub UserProc;
Var
    mb: IMetabase;
    TSDBObj: IMetabaseObjectDescriptor;
    Dest: ICubeInstanceDestination;
    DestExec: ICubeInstanceDestinationExecutor;
    DataMatrix: IMatrix;
    Ite: IMatrixIterator;
    ValidFilter: IValidationFilter;
    ExecSett: IValidationExecuteSettings;
    ExecRun: IValidationExecRun;
    i: Integer;
Begin
    Mb := MetabaseClass.Active;
    // Получаем базу данных временных рядов
    TSDBObj := Mb.ItemById("TSDB");
    // Получаем вариант отображения базы данных временных рядов 
    Dest := (TSDBObj.Open(NullAs ICubeInstance).Destinations.DefaultDestination;
    DestExec := dest.CreateExecutor;
    DestExec.PrepareExecute(Null);
    DestExec.PerformExecute;
    // Получаем данные
    DataMatrix := DestExec.Matrix;
    // Изменяем данные
    Ite := DataMatrix.CreateIterator;
    Ite.Move(IteratorDirection.First);
    While Ite.Valid Do
        If Ite.Value < 10 Then
            Ite.Value := Ite.Value + 10;
        End If;
        Ite.Move(IteratorDirection.Next);
    End While;
    // Получаем правило валидации
    ValidFilter := Mb.ItemByIdNamespace("NAMBCOMP_VALIDATION", TSDBObj.Key).Bind As IValidationFilter;
    // Создаем параметры выполнения правила валидации
    ExecSett := ValidFilter.CreateExecuteSettings;
    // Задаем данные, на которых валидация будет рассчитываться
    ExecSett.DataMatrix := DataMatrix;
    // Выполняем расчет правила
    ExecRun := ValidFilter.Execute(ExecSett);
    // Выводим количество исключений в окно консоли
    Ite := ExecRun.Matrix.CreateIterator;
    Ite.Move(IteratorDirection.First);
    While Ite.Valid Do
        i := i + 1;
        Ite.Move(IteratorDirection.Next);
    End While;
    Debug.WriteLine("Количество исключений валидации: " + i.ToString);
End Sub UserProc;

В результате выполнения примера правило валидации будет рассчитано на измененных данных из базы данных временных рядов. Количество исключений валидации будет выведено в окно консоли.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.Cubes;
Imports Prognoz.Platform.Interop.ForeSystem;
Imports Prognoz.Platform.Interop.Matrix;
Imports Prognoz.Platform.Interop.Ms;

Public Shared Sub Main(Params: StartParams);
Var
    mb: IMetabase;
    TSDBObj: IMetabaseObjectDescriptor;
    Dest: ICubeInstanceDestination;
    DestExec: ICubeInstanceDestinationExecutor;
    DataMatrix: IMatrix;
    Ite: IMatrixIterator;
    ValidFilter: IValidationFilter;
    ExecSett: ValidationExecuteSettings;
    ExecRun: IValidationExecRun;
    i: Integer;
Begin
    Mb := Params.Metabase;
    // Получаем базу данных временных рядов
    TSDBObj := Mb.ItemById["TSDB"];
    // Получаем вариант отображения базы данных временных рядов 
    Dest := (TSDBObj.Open(NullAs ICubeInstance).Destinations.DefaultDestination;
    DestExec := dest.CreateExecutor();
    DestExec.PrepareExecute(Null);
    DestExec.PerformExecute(False);
    // Получаем данные
    DataMatrix := DestExec.Matrix;
    // Изменяем данные
    Ite := DataMatrix.CreateIterator();
    Ite.Move(IteratorDirection.itdFirst);
    While Ite.Valid Do
        If (Ite.Value As double) < 10 Then
            Ite.Value := (Ite.Value As double) + 10;
        End If;
        Ite.Move(IteratorDirection.itdNext);
    End While;
    // Получаем правило валидации
    ValidFilter := Mb.ItemByIdNamespace["NAMBCOMP_VALIDATION", TSDBObj.Key].Bind() As IValidationFilter;
    // Создаем параметры выполнения правила валидации
    ExecSett := ValidFilter.CreateExecuteSettings();
    // Задаем данные, на которых валидация будет рассчитываться
    ExecSett.DataMatrix := DataMatrix;
    // Выполняем расчет правила
    ExecRun := ValidFilter.Execute(ExecSett);
    // Выводим количество исключений в окно консоли
    Ite := ExecRun.Matrix.CreateIterator();
    Ite.Move(IteratorDirection.itdFirst);
    While Ite.Valid Do
        i := i + 1;
        Ite.Move(IteratorDirection.itdNext);
    End While;
    System.Diagnostics.Debug.WriteLine("Количество исключений валидации: " + i.ToString());
End Sub;

См. также:

IValidationExecuteSettings