pub struct HistogramAnalyzer { /* private fields */ }Expand description
Analyzer that computes histogram distributions for numeric columns.
This analyzer creates a histogram with configurable number of buckets, providing insights into data distribution patterns. It’s memory-efficient even for high-cardinality columns by using fixed-size buckets.
§Example
ⓘ
use term_guard::analyzers::advanced::HistogramAnalyzer;
use datafusion::prelude::*;
let ctx = SessionContext::new();
// Register your data table
let analyzer = HistogramAnalyzer::new("price", 10); // 10 buckets
let state = analyzer.compute_state_from_data(&ctx).await?;
let metric = analyzer.compute_metric_from_state(&state)?;
if let MetricValue::Histogram(distribution) = metric {
println!("Price distribution: {} buckets", distribution.buckets.len());
for bucket in &distribution.buckets {
println!("[{:.2}, {:.2}): {} items",
bucket.lower_bound, bucket.upper_bound, bucket.count);
}
}Implementations§
Source§impl HistogramAnalyzer
impl HistogramAnalyzer
Sourcepub fn new(column: impl Into<String>, num_buckets: usize) -> Self
pub fn new(column: impl Into<String>, num_buckets: usize) -> Self
Creates a new histogram analyzer with the specified number of buckets.
§Arguments
column- The column to analyzenum_buckets- Number of histogram buckets (clamped between 1 and 1000)
Sourcepub fn num_buckets(&self) -> usize
pub fn num_buckets(&self) -> usize
Returns the number of buckets.
Trait Implementations§
Source§impl Analyzer for HistogramAnalyzer
impl Analyzer for HistogramAnalyzer
Source§type State = HistogramState
type State = HistogramState
The state type for incremental computation.
Source§type Metric = MetricValue
type Metric = MetricValue
The metric type produced by this analyzer.
Source§fn compute_state_from_data<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = AnalyzerResult<Self::State>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn compute_state_from_data<'life0, 'life1, 'async_trait>(
&'life0 self,
ctx: &'life1 SessionContext,
) -> Pin<Box<dyn Future<Output = AnalyzerResult<Self::State>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Computes the state from the input data. Read more
Source§fn compute_metric_from_state(
&self,
state: &Self::State,
) -> AnalyzerResult<Self::Metric>
fn compute_metric_from_state( &self, state: &Self::State, ) -> AnalyzerResult<Self::Metric>
Computes the final metric from the accumulated state. Read more
Source§fn description(&self) -> &str
fn description(&self) -> &str
Returns a description of what this analyzer computes. Read more
Source§fn columns(&self) -> Vec<&str>
fn columns(&self) -> Vec<&str>
Returns the column(s) this analyzer operates on, if any. Read more
Source§fn merge_states(&self, states: Vec<Self::State>) -> AnalyzerResult<Self::State>
fn merge_states(&self, states: Vec<Self::State>) -> AnalyzerResult<Self::State>
Merges multiple states into a single state. Read more
Source§fn metric_key(&self) -> String
fn metric_key(&self) -> String
Returns the metric key for storing results. Read more
Source§fn is_combinable(&self) -> bool
fn is_combinable(&self) -> bool
Indicates whether this analyzer can be combined with others. Read more
Source§impl Clone for HistogramAnalyzer
impl Clone for HistogramAnalyzer
Source§fn clone(&self) -> HistogramAnalyzer
fn clone(&self) -> HistogramAnalyzer
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 moreAuto Trait Implementations§
impl Freeze for HistogramAnalyzer
impl RefUnwindSafe for HistogramAnalyzer
impl Send for HistogramAnalyzer
impl Sync for HistogramAnalyzer
impl Unpin for HistogramAnalyzer
impl UnwindSafe for HistogramAnalyzer
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