スケッチ関数

スケッチは、完全な精度が必要ない場合に、データセットに関する特定の質問に概算で答えることができるデータ構造です。概算の利点は、完全な精度をもたらす関数よりも計算が高速で効率的であることが多いことです。

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パラメータ、標準偏差に対応する現在のエラー範囲、およびスケッチに保持されているエントリの数が含まれます。

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

特定の分位数で発生するスケッチ内の値を計算します。3番目の引数はクエリの包含性を示します。この関数は、inclusivityがfalseの場合に分位数より厳密に小さい値を返し、inclusivityがtrueの場合に分位数以下の値を返します。省略した場合は、デフォルトのinclusivityはtrueです。

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

特定の値がスケッチ内で発生する分位数を計算します。3番目の引数はクエリの包含性を示します。スケッチがデータXの分布を表すことを考えると、この関数は、inclusivityがfalseの場合にP(T < X)、inclusivityがtrueの場合にP(T <= X)を表す分位数を返します。省略した場合は、デフォルトのinclusivityはtrueです。