/// <summary> /// Runs all check groups and returns the verification result. Verification result includes all the metrics computed during the run. /// </summary> /// <param name="data">tabular data on which the checks should be verified.</param> /// <param name="checks">A sequence of check objects to be executed.</param> /// <param name="requiredAnalyzers">can be used to enforce the calculation of some some metrics. Regardless of if there are constraints on them (optional)</param> /// <param name="aggregateWith">loader from which we retrieve initial states to aggregate (optional)</param> /// <param name="saveStatesWith">persist resulting states for the configured analyzers (optional)</param> /// <param name="metricsRepositoryOptions">Options related to the MetricsRepository</param> /// <param name="fileOutputOptions">Options related to FileOuput using a SparkSession</param> /// <returns> Result for every check including the overall status, detailed status for each constraints and all metrics produced</returns> internal VerificationResult DoVerificationRun( DataFrame data, IEnumerable <Check> checks, IEnumerable <IAnalyzer <IMetric> > requiredAnalyzers, Option <IStateLoader> aggregateWith = default, Option <IStatePersister> saveStatesWith = default, VerificationMetricsRepositoryOptions metricsRepositoryOptions = default, VerificationFileOutputOptions fileOutputOptions = default) { IEnumerable <IAnalyzer <IMetric> > analyzers = requiredAnalyzers.Concat(checks.SelectMany(check => check.RequiredAnalyzers())); AnalysisRunnerRepositoryOptions options = new AnalysisRunnerRepositoryOptions( metricsRepositoryOptions.metricRepository, metricsRepositoryOptions.reuseExistingResultsForKey, Option <ResultKey> .None, metricsRepositoryOptions.failIfResultsForReusingMissing); AnalyzerContext analysisResults = AnalysisRunner.DoAnalysisRun( data, analyzers, aggregateWith, saveStatesWith, new StorageLevel(), options); VerificationResult verificationResult = Evaluate(checks, analysisResults); AnalyzerContext analyzerContext = new AnalyzerContext(verificationResult.Metrics); SaveOrAppendResultsIfNecessary(analyzerContext, metricsRepositoryOptions.metricRepository, metricsRepositoryOptions.saveOrAppendResultsWithKey); SaveJsonOutputsToFilesystemIfNecessary(fileOutputOptions, verificationResult); return(verificationResult); }
private void SaveJsonOutputsToFilesystemIfNecessary( VerificationFileOutputOptions fileOutputOptions, VerificationResult verificationResult) { }