DataMatrix: IMatrix;
DataMatrix: Prognoz.Platform.Interop.Matrix.IMatrix;
Свойство DataMatrix определяет матрицу данных, по которой будет рассчитана валидация.
Если матрица не задана, то валидация будет рассчитана по данным базы данных временных рядов, которой она принадлежит.
Для выполнения примера в репозитории предполагается наличие базы данных временных рядов с идентификатором «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(Null) As 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.
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(Null) As 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;
См. также: