パーセンタイル値の推定

Snowflakeは、t-Digestアルゴリズムの改良バージョンを使用します。これは、データセット内の近似パーセンタイル値を推定する空間と時間の効率的な方法です。

このトピックの内容:

概要

Snowflakeは、ダニングとエルトルによる t-Digestアルゴリズム論文 の改良バージョンの実装を提供しています。 APPROX_PERCENTILE ファミリーの関数を通じて実装されています。

文書化されているように、アルゴリズムには一定の相対誤差があります。アルゴリズムには実質的な経験的サポートがありますが、精度保証の厳密な証拠はないことに注意してください。

SQL 関数

以下の 集計関数 は、t-Digestを使用してパーセンタイル値を概算するために提供されています。

  • APPROX_PERCENTILE: 目的のパーセンタイル値の近似値を返します。

  • APPROX_PERCENTILE_ACCUMULATE: 最終的な推定ステップをスキップし、代わりに、集約の終了時に中間のt-Digest状態を返します。

  • APPROX_PERCENTILE_COMBINE: 複数の入力状態を単一の出力状態に結合(つまり、マージ)します。

  • APPROX_PERCENTILE_ESTIMATE: APPROX_PERCENTILE_ACCUMULATE または APPROX_PERCENTILE_COMBINE によって生成されたt-Digest状態のパーセンタイル推定値を計算します。

実装の詳細

  • 推定では、入力のサイズに関係なく一定量のスペースが使用されます。

  • t-Digest状態は、パーセンタイル値から独立しています。これにより、 t-Digest状態を1回計算し、複数のパーセンタイル値の状態をクエリできます。