T-Digest関数¶
Prestoは、ランクベースのメトリクスを推定するための2つのアルゴリズム、quantile digestとT-digestを実装しています。T-digestは一般にパフォーマンスが優れていますが、Prestoのquantile digestの実装はより多くの数値型をサポートしています。T-digestは、テール部分でより優れた精度(多くの場合、大幅に優れている)を持っていますが、使用される圧縮率によっては中央値での精度が低くなる可能性があります。比較すると、quantile digestは最大ランク誤差をサポートしており、これにより分位点に沿った精度の相対的な均一性が保証されます。Quantile digestはロスレスマージをサポートすることが正式に証明されていますが、T-digestはそうではありません(ただし、経験的にロスレスマージを実証しています)。
T-digestはTed Dunningによって開発されました。
データ構造¶
T-digestは、近似パーセンタイル情報を格納するデータスケッチです。このデータ構造のPresto型はtdigestと呼ばれ、tdigest
によって取り込まれる数値のセットを表すdouble
型のパラメータを受け入れます。他の数値型は、将来のリリースで追加される可能性があります。
T-digestは精度を損なうことなくマージでき、ストレージと取得のためにVARBINARY
との間でキャストできます。
関数¶
- merge(tdigest<double>) -> tdigest<double>()
すべての入力
tdigest
を単一のtdigest
にマージします。
- value_at_quantile(tdigest<double>, quantile) -> double()¶
0から1の間の数値
quantile
を指定して、T-digestから近似パーセンタイル値を返します。
- quantile_at_value(tdigest<double>, value) -> double()¶
入力
value
を指定して、T-digestから0から1の間の近似分位数値を返します。T-digestが空の場合、または入力値がダイジェストの範囲外にある場合は、Nullが返されます。
- scale_tdigest(tdigest<double>, scale_factor) -> tdigest<double>()¶
scale_factor
で指定された係数で分布がスケーリングされたtdigest
を返します。
- values_at_quantiles(tdigest<double>, quantiles) -> array<double>()¶
入力T-digestと、返される分位数を表す0から1の間の値の配列を指定して、近似パーセンタイル値を配列として返します。
- trimmed_mean(tdigest<double>, lower_quantile, upper_quantile) -> double()¶
指定された分位数境界の外側の分布部分を除外して、平均の推定値を返します。
lower_quantile
とupper_quantile
の両方は0から1の間でなければなりません。
- tdigest_agg(x) -> tdigest<double>()¶
すべての入力値
x
で構成されるtdigest
を返します。
- tdigest_agg(x, w) -> tdigest<double>()¶
項目ごとの重み
w
を使用して、すべての入力値x
で構成されるtdigest
を返します。
- tdigest_agg(x, w, compression) -> tdigest<double>()¶
tdigest
を返します。これは、項目ごとの重みw
と圧縮係数compression
を使用して、x
のすべての入力値から構成されます。compression
はゼロより大きい値である必要があり、すべての入力行で一定である必要があります。圧縮係数500は、通常、良好な精度とパフォーマンスが得られる、良い開始点です。
- destructure_tdigest(tdigest<double>) -> row<centroid_means array<double>, centroid_weights array<integer>, compression double, min double, max double, sum double, count bigint>()¶
コンポーネント部品の形式で
tdigest
データ構造を表す行を返します。これには、セントロイドの平均と重みの配列、圧縮係数、およびダイジェスト内の値の最大値、最小値、合計、カウントが含まれます。
- construct_tdigest(centroid_means array<double>, centroid_weights array<double>, compression double, min double, max double, sum double, count bigint) -> tdigest<double>()¶
コンポーネント部品(セントロイドの平均と重みの配列、圧縮係数、およびダイジェスト内の値の最大値、最小値、合計、カウント)から
tdigest
を返します。これは、destructure_tdigest
の逆です。この関数は、外部で作成された tdigest を Presto に追加する場合に特に役立ちます。