メインコンテンツへスキップ
メインコンテンツへスキップ

quantileDeterministic

quantileDeterministic

導入バージョン: v1.1

数値データ系列の近似的な分位数を計算します。

この関数は、リザーバサイズ最大 8192 のリザーバサンプリングに基づく決定的なサンプリングアルゴリズムを適用します。 結果は決定的です。 厳密な分位数を取得するには、quantileExact 関数を使用します。

クエリ内で異なるレベルを持つ複数の quantile* 関数を使用する場合、内部状態は結合されません(つまり、そのクエリは本来よりも非効率になります)。 このような場合は、quantiles 関数を使用します。

構文

quantileDeterministic(level)(expr, determinator)

別名: medianDeterministic

パラメータ

  • level — 省略可能。分位数のレベル。0 から 1 の間の定数の浮動小数点数。level の値として [0.01, 0.99] の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5 の場合、この関数は中央値を計算します。Float*

引数

  • expr — 数値型、Date または DateTime のデータ型となるカラム値に対する式。(U)Int* または Float* または Decimal* または Date または DateTime
  • determinator — リザーバサンプリングアルゴリズムにおいて、乱数生成器の代わりに使用されるハッシュを計算するための数値であり、サンプリング結果を決定的にするために使用されます。determinator としては、たとえばユーザー ID やイベント ID のような、任意の決定的な正の数値を使用できます。同じ determinator の値が頻繁に現れる場合、この関数は正しく動作しません。(U)Int*

戻り値

指定されたレベルの近似分位数を返します。Float64 または Date または DateTime

決定的な分位数の計算

CREATE TABLE t (val UInt32) ENGINE = Memory;
INSERT INTO t VALUES (1), (1), (2), (3);

SELECT quantileDeterministic(val, 1) FROM t;
┌─quantileDeterministic(val, 1)─┐
│                           1.5 │
└───────────────────────────────┘

関連項目