Values filtering keeps only the raw points (after metric type selection) whose value matches a condition, before reducing and resampling. Leaving the operator on None skips this step entirely — every point is kept.

Example series used for every operator below — 5 raw points of one series:
| Interval 1 (10:00:00) | Interval 2 (10:00:15) | Interval 3 (10:00:30) | Interval 4 (10:00:45) | Interval 5 (10:01:00) | |
|---|---|---|---|---|---|
| Value | 3 | 7 | 3 | 9 | 5 |
Each result below is the list of surviving points, written as (timestamp, value) pairs, one per
line.
| Operator | Parameters | Points kept | Result |
|---|---|---|---|
| None | — | all | (10:00:00, 3)(10:00:15, 7)(10:00:30, 3)(10:00:45, 9)(10:01:00, 5) |
| Equal to | Value 1 = 5 | value == 5 | (10:01:00, 5) |
| Not equal to | Value 1 = 5 | value != 5 | (10:00:00, 3)(10:00:15, 7)(10:00:30, 3)(10:00:45, 9) |
| Greater than or equal to | Value 1 = 5 | value >= 5 | (10:00:15, 7)(10:00:45, 9)(10:01:00, 5) |
| Less than or equal to | Value 1 = 5 | value <= 5 | (10:00:00, 3)(10:00:30, 3)(10:01:00, 5) |
| Greater than | Value 1 = 5 | value > 5 | (10:00:15, 7)(10:00:45, 9) |
| Less than | Value 1 = 5 | value < 5 | (10:00:00, 3)(10:00:30, 3) |
| Between | Value 1 = 3, Value 2 = 7 | 3 <= value <= 7 (inclusive) | (10:00:00, 3)(10:00:15, 7)(10:00:30, 3)(10:01:00, 5) |
| First | — | earliest point by timestamp, whatever its value | (10:00:00, 3) |
| Last | — | latest point by timestamp, whatever its value | (10:01:00, 5) |
First / Last don’t compare values. Unlike every other operator, First and Last don’t look at the value at all — they simply keep the chronologically first (or last) raw point of each series. They’re used to answer “what was the value at the start/end of the period”, not “give me the smallest/largest value” (that’s what Reduce’s Min/Max function is for).
If a series has no points at all matching the filter, it ends up with an empty points list — it isn’t discarded here, it simply has nothing left to reduce/resample. See Reduce for what happens to an empty series depending on scope and function, and the full worked example for a real case of this.
Validation
- Value 1 is required for every operator except None, First and Last.
- Value 2 is additionally required for Between.
- Both checks happen twice: once when saving the DPS (so a broken filter can’t be saved), and again defensively when evaluating (since Evaluate can run an unsaved, in-progress description).