You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds support to the compute engine for filtering which positions are
processed by ungrouping aggs. This should allow syntax like:
```
| STATS
success = COUNT(*) WHERE 200 <= response_code AND response_code < 300,
redirect = COUNT(*) WHERE 300 <= response_code AND response_code < 400,
client_err = COUNT(*) WHERE 400 <= response_code AND response_code < 500,
server_err = COUNT(*) WHERE 500 <= response_code AND response_code < 600,
total_count = COUNT(*)
```
We could translate the WHERE expression into an `ExpressionEvaluator`
and run it, then plug it into the filtering support added in this PR.
The actual filtering is done by creating a `FilteredAggregatorFunction`
which wraps a regular `AggregatorFunction` first executing the filter
against the incoming `Page` and then passing the resulting mask to the
`AggregatorFunction`. We've then added a `mask` to
`AggregatorFunction#process` which each aggregation function must use
for filtering.
We keep the unfiltered behavior by sending a constant block with `true`
in it. Each agg detects this and takes an "unfiltered" path, preserving
the original performance.
Importantly, when you don't turn this on it doesn't effect performance:
```
(blockType) (grouping) (op) Score Error -> Score Error Units
vector_longs none count 0.007 ± 0.001 -> 0.007 ± 0.001 ns/op
vector_longs none min 0.123 ± 0.004 -> 0.128 ± 0.005 ns/op
vector_longs longs count 4.311 ± 0.192 -> 4.218 ± 0.053 ns/op
vector_longs longs min 5.476 ± 0.077 -> 5.451 ± 0.074 ns/op
```
Copy file name to clipboardExpand all lines: x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBooleanAggregatorFunction.java
Copy file name to clipboardExpand all lines: x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctBytesRefAggregatorFunction.java
Copy file name to clipboardExpand all lines: x-pack/plugin/esql/compute/src/main/generated/org/elasticsearch/compute/aggregation/CountDistinctDoubleAggregatorFunction.java
0 commit comments