Пример #1
0
        /// <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);
        }
Пример #2
0
 private void SaveJsonOutputsToFilesystemIfNecessary(
     VerificationFileOutputOptions fileOutputOptions,
     VerificationResult verificationResult)
 {
 }