quantileDeterministic
導入バージョン: v1.1.0
数値データの数列の近似分位点を計算します。
この関数は、最大 8192 のリザーバーサイズを持つリザーバーサンプリングと、決定論的なサンプリングアルゴリズムを適用します。
結果は決定論的です。
正確な分位点を求めるには、quantileExact 関数を使用します。
1 つのクエリで異なるレベルの複数の 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*またはInt128またはUInt128またはInt256またはUInt256またはFloat*またはDateまたはDateTimedeterminator— リザーバサンプリングアルゴリズムで、ランダム数生成器の代わりにそのハッシュが使用され、サンプリング結果を決定論的にするための数値です。determinatorには、ユーザー ID やイベント ID など、任意の決定論的な正の数を使用できます。同じdeterminatorの値があまりに頻繁に現れると、この関数は正しく動作しません。UInt*
戻り値
指定したレベルの近似分位点を返します。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 │
└───────────────────────────────┘関連項目