faucet_core/profiling/mod.rs
1//! Learned column profiles with drift detection (#708).
2//!
3//! A run's written records are folded into one [`RunProfile`] by a
4//! [`Profiler`] — per top-level column: null rate, type mix, distinct-count
5//! estimate, numeric / string summaries and the most frequent values, all in
6//! bounded memory (see [`sketch`]). [`detect_drift`] then compares the
7//! profile against a rolling baseline of earlier runs and reports
8//! statistically significant changes per column, with no thresholds to
9//! write. [`ProfilingSink`] is the decorator that feeds a pipeline's sink
10//! writes into the profiler.
11//!
12//! The baseline store, the post-run evaluation, the catalog surfaces and the
13//! `faucet profiling` verbs live in the CLI; this module is the pure core.
14//!
15//! Vocabulary: *profiling* is this feature. A config *profile* (`profiles:`,
16//! `--profile`) is an unrelated config overlay.
17
18pub mod column;
19pub mod drift;
20pub mod sink;
21pub mod sketch;
22pub mod spec;
23
24pub use column::{
25 ColumnProfile, NumericSummary, Profiler, RunProfile, StringSummary, TopValue, TypeCounts,
26};
27pub use drift::{DriftMetric, ProfileDrift, detect_drift, population_stability_index};
28pub use sink::ProfilingSink;
29pub use spec::{OnProfileDrift, ProfilingSpec};