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

quantileTimingWeighted

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