A single raw read over multiple Nominal storage sources (e.g., assets/runs). More efficient than
unionAll of per-source raw reads. The fields that every source shares are hoisted here.
Keeps every Nth row of the timestamp-ordered input, per series. No grid arithmetic, no
interpolation, no boundary handling. Output count is ceil(input_count / n) per series.
Combines multiple enum series into one. If {@code operation} is present, duplicate
timestamps within a tag group are merged by the given operation. If {@code operation} is
absent, the inputs are concatenated (SQL {@code UNION ALL}) and duplicate timestamps are
preserved; callers that need aggregation should wrap the output downstream.
Applies Largest-Triangle-Three-Buckets to a numeric time series for visualization-oriented downsampling. The
algorithm preserves the first and last points, partitions the remaining input points based on the requested
output count, and selects points that preserve the visual shape of the series. Results are selected input
timestamp/value points, not fixed-width bucket aggregate rows.
Keeps every Nth row of the timestamp-ordered input, per series. No grid arithmetic, no
interpolation, no boundary handling. Output count is ceil(input_count / n) per series.
Even though this could be implementing using a filter transformation, handling it alone gives
easier pushdown instead of indirecting through ranges nodes
Aggregates the input numeric series under each range in the provided ranges, emitting a single point per
range (anchored at the range start). Separate from the RangesNumericAggregationNode multi-aggregate path
which supports the all variant.
Applies IIR-based signal filtering to input series. Includes low-pass, high-pass, band-pass, and band-stop
filters. Currently supports variable-order bidirectional Butterworth filters, with fixed-size padding based
on SciPy output.
Marker operation that causes a runtime error if duplicate timestamps are encountered
across the unioned inputs. Preserves the legacy {@code NumericUnionOperation.THROW}
semantic.
Filters series by their metadata time extent relative to the executing query’s window:
series active since lookback before the window start (extent ending at or after
windowStart - lookback) pass, all others are filtered out. There is no future-side bound,
so historical windows still see later-installed series. The bound is relative rather than
absolute so a resolved graph stays valid when reused across poll-based re-execution.
Evaluated against series metadata (max time), not individual points. Consumers without
time metadata (in-memory and streaming tag matchers) or without query-window context
treat this filter as always passing.
Rewrites each point’s timestamp to the start of the epoch-aligned bucket of size window.
For a point at timestamp t (nanoseconds) and window w (nanoseconds), the new timestamp is
floor(t / w) * w. Values are unchanged. Multiple input points may end up sharing a timestamp;
downstream operators are responsible for handling duplicates (e.g., aggregate dedups via
the aggregation function).