pub struct ReportAssembler { /* private fields */ }Expand description
Builder for constructing a ProfileReport.
Implementations§
Source§impl ReportAssembler
impl ReportAssembler
Sourcepub fn new(source: DataSource, execution: ExecutionMetadata) -> Self
pub fn new(source: DataSource, execution: ExecutionMetadata) -> Self
Create a new assembler with required source and execution metadata.
Sourcepub fn columns(self, columns: Vec<ColumnProfile>) -> Self
pub fn columns(self, columns: Vec<ColumnProfile>) -> Self
Set the column profiles for this report.
Sourcepub fn with_quality_data(self, data: HashMap<String, Vec<String>>) -> Self
pub fn with_quality_data(self, data: HashMap<String, Vec<String>>) -> Self
Provide sample data for quality metric calculation.
Sourcepub fn with_confidence(self, confidence: MetricConfidence) -> Self
pub fn with_confidence(self, confidence: MetricConfidence) -> Self
Override the default metric confidence level.
Sourcepub fn skip_quality(self) -> Self
pub fn skip_quality(self) -> Self
Explicitly skip quality metric calculation because the caller did not ask for it.
Use skip_quality_no_data when quality
was wanted but no sample is available. An analyzed empty source supplies
an empty sample through with_quality_data.
Sourcepub fn skip_quality_no_data(self) -> Self
pub fn skip_quality_no_data(self) -> Self
Skip quality metric calculation because no sample is available. An analyzed empty source must instead supply an empty quality sample; that produces an assessment with no assessable dimensions (#723).
A caller that already deselected quality keeps that answer, and only that one. Not asking is the more specific reason and does not stop being true when the sample is also unavailable. Every other reason is replaced: a projection withholds dimensions that could have been measured, which says nothing once no sample is available at all.
Sourcepub fn with_requested_dimensions(self, dims: Vec<QualityDimension>) -> Self
pub fn with_requested_dimensions(self, dims: Vec<QualityDimension>) -> Self
Set the quality dimensions to compute.
Sourcepub fn with_semantic_hints(self, hints: SemanticHints) -> Self
pub fn with_semantic_hints(self, hints: SemanticHints) -> Self
Set semantic hints used by quality metrics.
Sourcepub fn with_analysis_options(self, options: &AnalysisOptions) -> Self
pub fn with_analysis_options(self, options: &AnalysisOptions) -> Self
Apply the caller’s analysis selection: requested dimensions, semantic hints, column projection, and whether quality is computed at all.
Callers still pass their quality sample with
with_quality_data; this decides whether it is
used. Deselecting the quality pack leaves the report with no quality
object rather than an assessment with every dimension absent — “not
analyzed” and “analyzed, nothing found” are different answers.
Sourcepub fn with_exact_value_hint_bindings(
self,
bindings: Vec<SemanticHintBinding>,
) -> Self
pub fn with_exact_value_hint_bindings( self, bindings: Vec<SemanticHintBinding>, ) -> Self
Provide full-stream evidence for value-driven semantic hints.
Streaming engines should pass their bounded-memory accumulator output; it supersedes evidence recomputed from the retained quality sample.
Sourcepub fn with_row_duplicates(self, summary: Option<RowDuplicateSummary>) -> Self
pub fn with_row_duplicates(self, summary: Option<RowDuplicateSummary>) -> Self
Provide full-stream row-duplicate counts from an engine’s row tracker; they supersede the sample-based duplicate scan.
Sourcepub fn with_row_completeness(
self,
summary: Option<RowCompletenessSummary>,
) -> Self
pub fn with_row_completeness( self, summary: Option<RowCompletenessSummary>, ) -> Self
Provide full-stream complete-record counts from an engine’s row
tracker. Without them complete_records_ratio can only be bounded
from below, since per-column null totals cannot tell whether two
nulls fell in the same record.
Sourcepub fn build(self) -> ProfileReport
pub fn build(self) -> ProfileReport
Build the final ProfileReport.
This does not fail. A quality computation that returns an error leaves
the report without an assessment, exactly as a run that never asked for
one does, so the report records which of the two happened in
ProfileReport::quality_status rather than discarding the column
profiles that did compute.