草圖函數

草圖是一種資料結構,可以在不需要完全準確性的情況下,近似地回答有關資料集的特定問題。近似答案的好處是它們通常比產生完全準確性的函數計算速度更快且更有效。

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()

計算在特定分位數發生的草圖中的值。第三個引數是指查詢的包含性。當包含性為 false 時,此函數傳回嚴格小於分位數的值;當包含性為 true 時,則傳回小於或等於分位數的值。如果省略,預設包含性為 true。

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

計算特定值在草圖中發生的分位數。第三個引數是指查詢的包含性。假設草圖表示資料 X 的分佈,當包含性為 false 時,此函數傳回表示 P(T < X) 的分位數,當包含性為 true 時,則傳回表示 P(T <= X) 的分位數。如果省略,預設包含性為 true。