Skip to main content
Edit this page

quantileTiming

定められた精度で数値データシーケンスの分位数を計算します。

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

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

構文

quantileTiming(level)(expr)

エイリアス: medianTiming.

引数

  • level — 分位数のレベル。オプションのパラメータです。0から1までの定数の浮動小数点数。levelの値は [0.01, 0.99] の範囲を使用することをお勧めします。デフォルト値は0.5です。level=0.5では、関数は中央値を計算します。

  • exprカラム値に対する式で、Float*-タイプの数を返します。

    • 負の値が関数に渡された場合、動作は未定義です。
    • 値が30,000を超える場合(ページ読み込み時間が30秒を超える場合)、30,000と見なされます。

精度

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

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

そうでない場合、計算結果は16msの倍数まで丸められます。

Note

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

返される値

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

タイプ: Float32.

Note

関数に値が渡されない場合(quantileTimingIfを使用している場合)、NaNが返されます。これは、ゼロに至る結果と区別することを目的としています。NaN値の並べ替えに関する注意事項については、ORDER BY句を参照してください。

入力テーブル:

┌─response_time─┐
│ 72 │
│ 112 │
│ 126 │
│ 145 │
│ 104 │
│ 242 │
│ 313 │
│ 168 │
│ 108 │
└───────────────┘

クエリ:

SELECT quantileTiming(response_time) FROM t

結果:

┌─quantileTiming(response_time)─┐
│ 126 │
└───────────────────────────────┘

関連項目