Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

quantilesTDigestWeighted

quantilesTDigestWeighted

導入バージョン: v20.1.0

t-digest アルゴリズムを使用して、異なるレベルにおける数値データ列の複数の近似 分位点 を同時に計算します。 この関数は、数列の各要素の重みを考慮します。

この関数は quantileTDigestWeighted と同等ですが、単一のパスで複数の分位点レベルを計算できるため、個々の分位点関数を呼び出すよりも効率的です。

最大誤差は 1% です。メモリ消費量は log(n) で、n は値の数です。

この関数の性能は、quantilesquantilesTiming よりも低くなります。 State サイズと精度の比率という点では、この関数は quantiles よりも大幅に優れています。

結果はクエリの実行順序に依存するため、非決定論的です。

構文

quantilesTDigestWeighted(level1, level2, ...)(expr, weight)

パラメータ

  • level — 分位点のレベル。0 から 1 までの定数の浮動小数点数を 1 つ以上指定します。level の値には [0.01, 0.99] の範囲を使用することを推奨します。Float*

引数

  • expr — カラムの値に対する式。結果の data type は数値型、Date、または DateTime です。(U)Int* または Float* または Date または DateTime
  • weight — 数列の要素の重みを持つカラム。重みは値の出現回数です。UInt*

戻り値

指定した levels の近似分位点を、指定した levels と同じ順序で格納した Array。入力が Date または DateTime の場合、出力フォーマットは入力フォーマットと一致します。Array(Float32) または Array(Date) または Array(DateTime)

t-digest を使用して複数の重み付き分位点を計算する

SELECT quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1) FROM numbers(100);
┌─quantilesTDigestWeighted(0.25, 0.5, 0.75)(number, 1)─┐
│ [24,49,74]                                           │
└──────────────────────────────────────────────────────┘
Navigation