草图函数¶
草图是数据结构,当不需要完全准确性时,它们可以近似地回答有关数据集的特定问题。近似答案的好处是,它们通常比产生完全准确性的函数计算速度更快、效率更高。
Presto 支持计算 Apache DataSketches 库中提供的一些草图。
Theta 草图¶
Theta 草图支持对数据集进行不同的值计数,并且还提供执行集合运算的能力。有关 Theta 草图的更多信息,请参阅 Apache Datasketches 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。