quantileTiming
導入バージョン: v1.1.0
指定された精度で、数値データ列の分位点を計算します。
結果は決定論的です (クエリ処理の順序に依存しません) 。 この関数は、Web ページの読み込み時間やバックエンドの応答時間のような分布を表す数列を扱うために最適化されています。
クエリ内で異なるレベルの複数の quantile* 関数を使用する場合、内部状態は結合されません (つまり、クエリの実行効率は本来より低くなります) 。
この場合は、quantiles 関数を使用してください。
精度
計算が正確になるのは、次の場合です。
- 値の総数が 5670 を超えない。
- 値の総数が 5670 を超えていても、ページの読み込み時間が 1024ms 未満である。
それ以外の場合、計算結果は 16 ms 単位に丸められます。
構文
quantileTiming(level)(expr)別名: medianTiming
パラメータ
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またはDateTime
戻り値
指定したレベルの分位点。関数に値が渡されない場合 (quantileTimingIf を使用している場合) は、NaN が返されます。これは、そのようなケースを結果が 0 になるケースと区別するためです。Float32
例
タイミングの分位点を計算する
CREATE TABLE t (response_time UInt32) ENGINE = Memory;
INSERT INTO t VALUES (72), (112), (126), (145), (104), (242), (313), (168), (108);
SELECT quantileTiming(response_time) FROM t;┌─quantileTiming(response_time)─┐
│ 126 │
└───────────────────────────────┘関連項目