quantilesTimingWeighted
導入バージョン: v1.1.0
各シーケンス要素の重みを考慮しながら、一定の精度で、数値データ列の複数の分位点を異なるレベルで同時に計算します。
この関数は quantileTimingWeighted と同等ですが、1 回の処理で複数の分位点レベルを計算できるため、個別に分位点関数を呼び出すよりも効率的です。
結果は決定論的です (クエリの処理順序に依存しません) 。この関数は、Web ページの読み込み時間やバックエンドの応答時間のような分布を表すシーケンスを扱うよう最適化されています。
Accuracy
計算が正確になるのは、次の場合です。
- 値の総数が 5670 を超えない。
- 値の総数が 5670 を超えていても、ページの読み込み時間が 1024ms 未満である。
それ以外の場合、計算結果は最も近い 16 ms の倍数に丸められます。
Syntax
quantilesTimingWeighted(level1, level2, ...)(expr, weight)パラメータ
level— 分位点のレベル。0 から 1 までの 1 つ以上の定数の浮動小数点数です。levelの値には[0.01, 0.99]の範囲を使用することを推奨します。Float*
引数
expr— カラムの値に対する式で、結果は数値データ型、Date、またはDateTimeになります。負の値が関数に渡された場合の動作は未定義です。値が 30,000 を超える場合 (ページの読み込み時間が 30 秒を超える場合) は、30,000 と見なされます。(U)Int*またはFloat*またはDateまたはDateTimeweight— シーケンス要素の重みを持つカラム。weightは値の出現回数です。UInt*
戻り値
指定したレベルの分位点を、指定したレベルと同じ順序で格納した Array。Array(Float32)
例
複数の重み付きタイミング分位点を計算する
CREATE TABLE t (response_time UInt32, weight UInt32) ENGINE = Memory;
INSERT INTO t VALUES (68, 1), (104, 2), (112, 3), (126, 2), (138, 1), (162, 1);
SELECT quantilesTimingWeighted(0.5, 0.99)(response_time, weight) FROM t;┌─quantilesTimingWeighted(0.5, 0.99)(response_time, weight)─┐
│ [112,162] │
└───────────────────────────────────────────────────────────┘関連項目