pub struct AsofJoinOperator { /* private fields */ }Expand description
ASOF join operator.
Performs temporal proximity joins between two event streams. Left events probe the right-side state for the closest matching timestamp.
§State Management
Right-side events are stored in memory in per-key BTreeMap structures.
State is persisted to the state store on checkpoint and cleaned up
based on watermark progress.
§Performance Characteristics
- Matching: O(log n) per left event (
BTreeMaprange query) - State size: Bounded by right-side events within tolerance + watermark lag
- Memory: Linear in right-side event count per key
Implementations§
Source§impl AsofJoinOperator
impl AsofJoinOperator
Sourcepub fn new(config: AsofJoinConfig) -> Self
pub fn new(config: AsofJoinConfig) -> Self
Creates a new ASOF join operator.
Sourcepub fn with_id(config: AsofJoinConfig, operator_id: String) -> Self
pub fn with_id(config: AsofJoinConfig, operator_id: String) -> Self
Creates a new ASOF join operator with explicit ID.
Sourcepub fn config(&self) -> &AsofJoinConfig
pub fn config(&self) -> &AsofJoinConfig
Returns the configuration.
Sourcepub fn metrics(&self) -> &AsofJoinMetrics
pub fn metrics(&self) -> &AsofJoinMetrics
Returns the metrics.
Sourcepub fn reset_metrics(&mut self)
pub fn reset_metrics(&mut self)
Resets the metrics.
Sourcepub fn state_size(&self) -> usize
pub fn state_size(&self) -> usize
Returns the total number of right-side events in state.
Sourcepub fn process_left(
&mut self,
event: &Event,
_ctx: &mut OperatorContext<'_>,
) -> OutputVec
pub fn process_left( &mut self, event: &Event, _ctx: &mut OperatorContext<'_>, ) -> OutputVec
Processes a left-side event (probe side).
Sourcepub fn process_right(
&mut self,
event: &Event,
ctx: &mut OperatorContext<'_>,
) -> OutputVec
pub fn process_right( &mut self, event: &Event, ctx: &mut OperatorContext<'_>, ) -> OutputVec
Processes a right-side event (build side).
Sourcepub fn on_watermark(
&mut self,
watermark: i64,
_ctx: &mut OperatorContext<'_>,
) -> OutputVec
pub fn on_watermark( &mut self, watermark: i64, _ctx: &mut OperatorContext<'_>, ) -> OutputVec
Handles watermark updates and triggers state cleanup.
Trait Implementations§
Source§impl Operator for AsofJoinOperator
impl Operator for AsofJoinOperator
Source§fn process(&mut self, event: &Event, ctx: &mut OperatorContext<'_>) -> OutputVec
fn process(&mut self, event: &Event, ctx: &mut OperatorContext<'_>) -> OutputVec
Process an incoming event
Source§fn on_timer(
&mut self,
timer: Timer,
_ctx: &mut OperatorContext<'_>,
) -> OutputVec
fn on_timer( &mut self, timer: Timer, _ctx: &mut OperatorContext<'_>, ) -> OutputVec
Handle timer expiration
Source§fn checkpoint(&self) -> OperatorState
fn checkpoint(&self) -> OperatorState
Checkpoint the operator’s state
Source§fn restore(&mut self, state: OperatorState) -> Result<(), OperatorError>
fn restore(&mut self, state: OperatorState) -> Result<(), OperatorError>
Restore from a checkpoint Read more
Auto Trait Implementations§
impl Freeze for AsofJoinOperator
impl !RefUnwindSafe for AsofJoinOperator
impl Send for AsofJoinOperator
impl Sync for AsofJoinOperator
impl Unpin for AsofJoinOperator
impl !UnwindSafe for AsofJoinOperator
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
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> 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> LayoutRaw for T
impl<T> LayoutRaw for T
Source§fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
fn layout_raw(_: <T as Pointee>::Metadata) -> Result<Layout, LayoutError>
Returns the layout of the type.
Source§impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
impl<T, N1, N2> Niching<NichedOption<T, N1>> for N2
Source§unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
unsafe fn is_niched(niched: *const NichedOption<T, N1>) -> bool
Returns whether the given value has been niched. Read more
Source§fn resolve_niched(out: Place<NichedOption<T, N1>>)
fn resolve_niched(out: Place<NichedOption<T, N1>>)
Writes data to
out indicating that a T is niched.