Skip to main content
Edit this page

quantileTimingWeighted

決定された精度で、それぞれのシーケンスメンバーの重みに基づいて、数値データシーケンスの分位数を計算します。

この結果は決定論的(クエリ処理順序に依存しない)です。この関数は、ウェブページの読み込み時間やバックエンドの応答時間のような分布を記述するシーケンスでの作業に最適化されています。

異なるレベルの複数のquantile*関数をクエリで使用する場合、内部状態は結合されません(つまり、クエリは本来の効率より低下します)。この場合には、quantiles関数を使用してください。

構文

quantileTimingWeighted(level)(expr, weight)

別名: medianTimingWeighted.

引数

  • level — 分位数のレベル。オプションのパラメータ。0から1の範囲の定数の浮動小数点数。levelの値は[0.01, 0.99]の範囲を推奨します。デフォルト値:0.5。level=0.5の場合、関数は中央値を計算します。

  • exprカラム値に対する式で、Float*型の番号を返します。

      - 負の値が関数に渡された場合、その動作は未定義です。
    - 値が30,000(ページ読み込み時間が30秒以上)を超える場合、30,000とみなされます。
  • weight — シーケンス要素の重みを持つカラム。重みは値の出現回数です。

精度

計算は以下の場合に正確です:

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

それ以外の場合、計算の結果は16msの倍数に丸められます。

Note

ページ読み込み時間の分位数を計算するには、この関数はquantileよりも効率的で正確です。

返される値

  • 指定されたレベルの分位数。

タイプ: Float32.

Note

関数に値が渡されない場合(quantileTimingIfを使用する場合)、NaNが返されます。これは、結果がゼロとなる場合と区別するためです。NaN値のソートに関しては、ORDER BY句を参照してください。

入力テーブル:

┌─response_time─┬─weight─┐
│ 68 │ 1 │
│ 104 │ 2 │
│ 112 │ 3 │
│ 126 │ 2 │
│ 138 │ 1 │
│ 162 │ 1 │
└───────────────┴────────┘

クエリ:

SELECT quantileTimingWeighted(response_time, weight) FROM t

結果:

┌─quantileTimingWeighted(response_time, weight)─┐
│ 112 │
└───────────────────────────────────────────────┘

quantilesTimingWeighted

quantileTimingWeightedと同様ですが、分位数レベルの複数のパラメータを受け取り、それらの分位数の多くの値で満たされた配列を返します。

入力テーブル:

┌─response_time─┬─weight─┐
│ 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] │
└───────────────────────────────────────────────────────────┘

関連項目