#docs #tql

Aggregators

You can use aggregations at query time to summarize result data.

You can use aggregations at query time to summarize result data. The following aggregators are available:

Numerical Aggregators

Count

count computes the count of rows that match the filters.

{ "type" : "count", "name" : <output_name> }

DoubleSum

doubleSum computes and stores the sum of values as a 64-bit floating point value.

The doubleSum aggregator takes the following properties:

  • name: Output name for the summed value
  • fieldName: Name of the metric column to sum over
{ "type" : "doubleSum", "name" : <output_name>, "fieldName" : <metric_name> }

DoubleMin

doubleMin computes the minimum of all metric values and Double.POSITIVE_INFINITY.

{ "type" : "doubleMin", "name" : <output_name>, "fieldName" : <metric_name> }

DoubleMax

doubleMax computes the maximum of all metric values and Double.NEGATIVE_INFINITY.

{ "type" : "doubleMax", "name" : <output_name>, "fieldName" : <metric_name> }

Averaging Aggregators

DoubleMean

doubleMean computes and returns the arithmetic mean of a column’s values as a 64-bit floating point value.

Warning: this aggregator is mean 😡😡

{ "type" : "doubleMean", "name" : <output_name>, "fieldName" : <metric_name> }

Unique Aggregators

ThetaSketch

Theta sketches are a probabilistic data structure used for the count-distinct problem. They allow us to quickly count elements in sets, such as the set of users in the aggregation buckets

{
  "fieldName": "clientUser",
  "name": "count",
  "type": "thetaSketch"
}

Cardinality

cardinality computes the cardinality of a dimension.

{
  "byRow": false,
  "fields": ["clientUser"],
  "name": "a0",
  "round": true,
  "type": "cardinality"
}

First and Last Aggregators

DoubleFirst

doubleFirst computes the first value of all metric values.

{ "type" : "doubleFirst", "name" : <output_name>, "fieldName" : <metric_name> }

DoubleLast

doubleLast computes the last value of all metric values.

{ "type" : "doubleLast", "name" : <output_name>, "fieldName" : <metric_name> }

StringFirst

stringFirst computes the first value of all metric values.

{ "type" : "stringFirst", "name" : <output_name>, "fieldName" : <metric_name> }

StringLast

stringLast computes the last value of all metric values.

{ "type" : "stringLast", "name" : <output_name>, "fieldName" : <metric_name> }

ANY Aggregators

DoubleAny

Returns any value including null. This aggregator can simplify and optimize the performance by returning the first encountered value (including null).

doubleAny returns any double metric value.

{ "type" : "doubleAny", "name" : <output_name>, "fieldName" : <metric_name> }

StringAny

Returns any value including null. This aggregator can simplify and optimize the performance by returning the first encountered value (including null).

stringAny returns any string metric value.

{ "type" : "stringAny", "name" : <output_name>, "fieldName" : <metric_name> }

Misc

Filtered

A filtered aggregator wraps any given aggregator, but only aggregates the values for which the given dimension filter matches.

This makes it possible to compute the results of a filtered and an unfiltered aggregation simultaneously, without having to issue multiple queries, and use both results as part of post-aggregations.

Note: If only the filtered results are required, consider putting the filter on the query itself, which will be much faster since it doesn’t require scanning all the data.

{
  "type": "filtered",
  "filter": {
    "type": "and",
    "fields": [
      {
        "type": "selector",
        "dimension": "type",
        "value": "InsightShown"
      }
    ]
  },
  "aggregator": {
    "type": "thetaSketch",
    "name": "InsightShown",
    "fieldName": "clientUser"
  }
}