quantileTimingWeighted
導入バージョン: v1.1.0
指定した精度で、数値データ列に対し、各要素の重みに応じた 分位数 を計算します。
結果は決定論的です (クエリ処理の順序に依存しません) 。この関数は、Web ページの読み込み時間やバックエンドの応答時間のような分布を表すシーケンスを扱うように最適化されています。
1 つのクエリ内で異なるレベルを持つ複数の quantile* 関数を使用すると、内部状態は結合されません (つまり、クエリは本来よりも効率が低くなります) 。この場合は、quantiles 関数を使用してください。
精度
次の場合、計算は正確です。
- 値の総数が 5670 を超えない。
- 値の総数が 5670 を超えているが、ページの読み込み時間が 1024ms 未満である。
それ以外の場合、計算結果は最も近い 16 ms の倍数に丸められます。
構文
quantileTimingWeighted(level)(expr, weight)別名: medianTimingWeighted
パラメータ
level— 任意。分位数のレベルです。0 から 1 までの定数浮動小数点数を指定します。levelの値には[0.01, 0.99]の範囲を使用することを推奨します。デフォルト値: 0.5。level=0.5の場合、この関数は中央値を計算します。Float*
引数
expr— カラムの値に対する式で、数値データ型、Date、またはDateTimeを返します。負の値をこの関数に渡した場合の動作は未定義です。値が 30,000 を超える場合 (ページの読み込み時間が 30 秒超) 、30,000 と見なされます。(U)Int*またはFloat*またはDateまたはDateTimeweight— シーケンス要素の重みを持つカラムです。重みは値の出現回数を表す数です。UInt*
戻り値
指定したレベルの分位数です。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 quantileTimingWeighted(response_time, weight) FROM t;┌─quantileTimingWeighted(response_time, weight)─┐
│ 112 │
└───────────────────────────────────────────────┘