AggCountWhere
AggCountWhere
returns an aggregator that computes the number of values that pass a set of filters within an aggregation group.
Syntax
AggCountWhere(resultColumn, filters...)
Parameters
Parameter | Type | Description |
---|---|---|
resultColumn | String | The name of the column that will contain the count of values that pass the filters. |
filters | String... | Formulas for filtering as a list of Strings. Filters can be:
|
Providing multiple filter strings in the filters
parameter will result in an AND
operation being applied to the
filters. For example,
"Number % 3 == 0", "Number % 5 == 0"
will return the count of values where Number
is evenly divisible by
both 3
and 5
. You can also write this as a single conditional filter, "Number % 3 == 0 && Number % 5 == 0"
and
receive the same result.
You can use the ||
operator to OR
multiple filters. For example, Y == `M` || Y == `N`
matches when Y
equals
M
or N
.
Returns
An aggregator that computes the number of values within an aggregation group that pass the provided filters.
Examples
In this example, AggCountWhere
returns the number of values of Number
that are >= 20
and < 99
as grouped by X
.
source = newTable(
stringCol("X", "A", "B", "A", "C", "B", "A", "B", "B", "A", "A", "B", "A", "C", "B", "A", "B", "B", "C"),
stringCol("Y", "M", "N", "M", "N", "N", "M", "O", "P", "N", "M", "N", "M", "N", "N", "M", "O", "P", "N"),
intCol("Number", 55, 76, 55, 130, 230, 50, 76, 137, 214, 55, 76, 55, 130, 230, 50, 76, 137, 214),
)
result = source.aggBy(AggCountWhere("countNum", "Number >= 20", "Number < 99"), "X")
- source
- result
In this example, AggCountWhere
returns the number of values of Y
that are M
or N
, as grouped by X
.
source = newTable(
stringCol("X", "A", "B", "A", "C", "B", "A", "B", "B", "A", "A", "B", "A", "C", "B", "A", "B", "B", "C"),
stringCol("Y", "M", "N", "M", "N", "N", "M", "O", "P", "N", "M", "N", "M", "N", "N", "M", "O", "P", "N"),
intCol("Number", 55, 76, 55, 130, 230, 50, 76, 137, 214, 55, 76, 55, 130, 230, 50, 76, 137, 214),
)
result = source.aggBy(AggCountWhere("countY", "Y == `M` || Y == `N`"), "X")
- source
- result
In this example, AggCountWhere
returns the number of rows where Y
equals M
and Number
> 50
over the entire table (no grouping).
source = newTable(
stringCol("X", "A", "B", "A", "C", "B", "A", "B", "B", "A", "A", "B", "A", "C", "B", "A", "B", "B", "C"),
stringCol("Y", "M", "N", "M", "N", "N", "M", "O", "P", "N", "M", "N", "M", "N", "N", "M", "O", "P", "N"),
intCol("Number", 55, 76, 55, 130, 230, 50, 76, 137, 214, 55, 76, 55, 130, 230, 50, 76, 137, 214),
)
result = source.aggBy(AggCountWhere("count", "Y == `M` && Number > 50"))
- source
- result
In this example, AggCountWhere
returns the number of rows where Number
is between 50
and 100
(inclusive), as grouped by X
and Y
.
source = newTable(
stringCol("X", "A", "B", "A", "C", "B", "A", "B", "B", "A", "A", "B", "A", "C", "B", "A", "B", "B", "C"),
stringCol("Y", "M", "N", "M", "N", "N", "M", "O", "P", "N", "M", "N", "M", "N", "N", "M", "O", "P", "N"),
intCol("Number", 55, 76, 55, 130, 230, 50, 76, 137, 214, 55, 76, 55, 130, 230, 50, 76, 137, 214),
)
result = source.aggBy(AggCountWhere("countNum", "Number >= 50", "Number <= 100"), "X", "Y")
- source
- result