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

quantilesTimingWeighted

quantilesTimingWeighted

導入バージョン: v1.1

数値データのシーケンスに対して、各要素の重みを考慮しつつ、異なるレベルの複数の分位数を、指定された精度で同時に計算します。

この関数は quantileTimingWeighted と同等ですが、複数の分位レベルを1回の処理で計算できるため、個々の分位関数を個別に呼び出すよりも効率的です。

結果は決定的であり(クエリの処理順序に依存しません)、Webページの読み込み時間やバックエンドのレスポンスタイムのような分布を表すシーケンスでの利用に最適化されています。

精度

次の場合、計算は正確です:

  • 値の総数が 5670 を超えない場合。
  • 値の総数が 5670 を超える場合でも、ページ読み込み時間が 1024ms 未満の場合。

それ以外の場合、計算結果は 16ms 単位の最も近い値に丸められます。

注記

ページ読み込み時間の分位数を計算する場合、この関数は quantiles よりも効率的かつ高精度です。

構文

quantilesTimingWeighted(level1, level2, ...)(expr, weight)

パラメータ

  • level — 分位数のレベル。0 から 1 までの 1 つ以上の浮動小数点定数。level の値には [0.01, 0.99] の範囲を使用することを推奨します。Float*

引数

  • expr — カラム値に対する式で、Float* 型の数値を返します。負の値が関数に渡された場合、その動作は未定義です。値が 30,000(ページ読み込み時間が 30 秒を超えるもの)より大きい場合は、30,000 とみなされます。Float*
  • weight — シーケンス要素の重みを持つカラム。重みは値の出現回数です。UInt*

戻り値

指定されたレベルと同じ順序で並んだ、指定レベルの分位数の配列。Array(Float32)

複数の重み付きタイミング分位数の計算

SELECT quantilesTimingWeighted(0.5, 0.99)(response_time, weight) FROM t;
┌─quantilesTimingWeighted(0.5, 0.99)(response_time, weight)─┐
│ [112, 162]                                                │
└───────────────────────────────────────────────────────────┘

関連項目