#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.

Filtered aggregators also support relative time intervals.

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