6.22. Quantile Digest Functions

Presto implements the approx_percentile function with the quantile digestdata structure. The underlying data structure, qdigest,is exposed as a data type in Presto, and can be created, queried and storedseparately from approx_percentile.

Data Structures

A quantile digest is a data sketch which stores approximate percentileinformation. The presto type for this data structure is called qdigest,and it takes a parameter which must be one of bigint, double orreal which represent the set of numbers that may be ingested by theqdigest. They may be merged without losing precision, and for storageand retrieval they may be cast to/from VARBINARY.

Functions

  • merge(qdigest) → qdigest
  • Merges all input qdigests into a single qdigest.

  • valueat_quantile(_qdigest(T), quantile) → T

  • Returns the approximate percentile values from the quantile digest giventhe number quantile between 0 and 1.

  • valuesat_quantiles(_qdigest(T), quantiles) → T

  • Returns the approximate percentile values as an array given the inputquantile digest and array of values between 0 and 1 whichrepresent the quantiles to return.

  • qdigestagg(_x) → qdigest<[same as x]>

  • Returns the qdigest which is composed of all input values of x.

  • qdigestagg(_x, w) → qdigest<[same as x]>

  • Returns the qdigest which is composed of all input values of x usingthe per-item weight w.

  • qdigestagg(_x, w, accuracy) → qdigest<[same as x]>

  • Returns the qdigest which is composed of all input values of x usingthe per-item weight w and maximum error of accuracy. accuracymust be a value greater than zero and less than one, and it must be constantfor all input rows.