pub struct ApproxCountDistinctConstraint { /* private fields */ }Expand description
A constraint that validates the approximate count of distinct values in a column.
This constraint uses DataFusion’s APPROX_DISTINCT function which provides an approximate count using HyperLogLog algorithm. This is much faster than exact COUNT(DISTINCT) for large datasets while maintaining accuracy within 2-3% error margin.
§Examples
use term_guard::constraints::{ApproxCountDistinctConstraint, Assertion};
use term_guard::core::Constraint;
// Check for high cardinality (e.g., user IDs)
let constraint = ApproxCountDistinctConstraint::new("user_id", Assertion::GreaterThan(1000000.0));
assert_eq!(constraint.name(), "approx_count_distinct");
// Check for low cardinality (e.g., country codes)
let constraint = ApproxCountDistinctConstraint::new("country_code", Assertion::LessThan(200.0));Implementations§
Trait Implementations§
Source§impl Clone for ApproxCountDistinctConstraint
impl Clone for ApproxCountDistinctConstraint
Source§fn clone(&self) -> ApproxCountDistinctConstraint
fn clone(&self) -> ApproxCountDistinctConstraint
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Constraint for ApproxCountDistinctConstraint
impl Constraint for ApproxCountDistinctConstraint
Source§fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn evaluate<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = Result<ConstraintResult>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Evaluates the constraint against the data in the session context. Read more
Source§fn column(&self) -> Option<&str>
fn column(&self) -> Option<&str>
Returns the column this constraint operates on (if single-column). Read more
Source§fn metadata(&self) -> ConstraintMetadata
fn metadata(&self) -> ConstraintMetadata
Returns the metadata associated with this constraint. Read more
Auto Trait Implementations§
impl Freeze for ApproxCountDistinctConstraint
impl RefUnwindSafe for ApproxCountDistinctConstraint
impl Send for ApproxCountDistinctConstraint
impl Sync for ApproxCountDistinctConstraint
impl Unpin for ApproxCountDistinctConstraint
impl UnwindSafe for ApproxCountDistinctConstraint
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more