草图函数

草图是数据结构,当不需要完全准确性时,它们可以近似地回答有关数据集的特定问题。近似答案的好处是,它们通常比产生完全准确性的函数计算速度更快、效率更高。

Presto 支持计算 Apache DataSketches 库中提供的一些草图。

Theta 草图

Theta 草图支持对数据集进行不同的值计数,并且还提供执行集合运算的能力。有关 Theta 草图的更多信息,请参阅 Apache Datasketches Theta 草图文档

sketch_theta(x) -> varbinary()

从输入数据集计算 theta 草图。此函数的输出可以用作其他 sketch_theta_* 函数族的输入。

sketch_theta_estimate(sketch) -> double()

返回输入草图中不同值的估计值。

sketch_theta_summary(sketch) -> row(estimate double, theta double, upper_bound_std double, lower_bound_std double, retained_entries int)

返回输入草图的摘要,其中包括不同的值估计以及其他有用信息,例如草图 theta 参数、对应于 1 个标准偏差的当前误差界限以及草图中保留的条目数。

KLL 草图

Kll 草图是分位数草图的实现。有关 KLL 草图的更多信息,请参阅 Apache Datasketches KLL 草图文档

sketch_kll[T](x: T) -> kllsketch[T]()

这将计算一个 KLL 草图。存储形式是 Apache DataSketches KLL 草图的小端序列化版本。

sketch_kll_with_k[T](x: T, k: int) -> kllsketch[T]()

这将使用提供的 k 值计算 KLL 草图。 k 参数必须在 [8..65535] 范围内。它控制草图的精度。较小的 k 准确性较低,但占用的存储空间更少。较大的 k 会更准确,但会占用更多存储空间。有关 k 参数的更多信息,请参阅 KLL 草图文档。此函数返回的草图的序列化形式与 sketch_kll 函数相同。

sketch_kll_quantile[T](sketch: kllsketch[T], rank: double[, inclusivity: boolean]) -> T()

计算草图中在特定分位数处出现的 value。第三个参数指的是查询的包含性。当包含性为 false 时,此函数返回严格小于分位数的值,或者当包含性为 true 时返回小于或等于分位数的值。如果省略,默认包含性为 true。

sketch_kll_rank[T](sketch: kllsketch[T], quantile: T[, inclusivity: boolean]) -> double()

计算特定值在草图中出现的 quantile。第三个参数指的是查询的包含性。鉴于草图表示数据 X 的分布,此函数返回表示 P(T < X) 的分位数,当包含性为 false 时,或者当包含性为 true 时返回表示 P(T <= X) 的分位数。如果省略,默认包含性为 true。