パーセンタイル値の推定¶
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回計算し、複数のパーセンタイル値の状態をクエリできます。