percentile()、percentiles() (集計関数)

関数はpercentile()expr で定義された母集団の指定された最も近いランクのパーセンタイルの推定値を計算します。 精度は、パーセンタイル リージョンの人口密度によって異なります。

percentiles() は と同様に機能します percentile()。 ただし、 percentiles() 一度に複数のパーセンタイル値を計算できます。これは、各パーセンタイル値を個別に計算するよりも効率的です。

重み付けパーセンタイルを計算するには、「 percentilesw()」を参照してください。

Note

この関数は、summarize 演算子と組み合わせて使用します。

構文

percentile(Expr,パーセンタイル)

percentiles(Expr,パーセン タイル)

構文規則について詳しく知る。

パラメーター

名前 必須 説明
expr string ✔️ 集計計算に使用する式。
パーセンタイル int または long ✔️ パーセンタイルを指定する定数。
パーセン タイル int または long ✔️ 1 つ以上のコンマ区切りパーセンタイル。

戻り値

グループ内の指定されたパーセンタイルの expr の推定値を含むテーブルを返します。それぞれは個別の列に格納されます。

Note

1 つの列のパーセンタイルを返すには、「 配列としてパーセンタイルを返す」を参照してください。

1 パーセンタイルを計算する

次の例は、サンプル セットの DamageProperty 95% より大きく、サンプル セットの 5% 未満の値を示しています。

StormEvents | summarize percentile(DamageProperty, 95) by State

出力

表示される結果テーブルには、最初の 10 行のみが含まれます。

State percentile_DamageProperty_95
ATLANTIC SOUTH 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
AMERICAN SAMOA 250000
ケンタッキー 35000
オハイオ 150000
KANSAS 51392
ミシガン 49167
ALABAMA 50000

複数のパーセンタイルを計算する

次の例は、5、50 (中央値) と 95 を使用して同時に計算された の値 DamageProperty を示しています。

StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State

出力

表示される結果テーブルには、最初の 10 行のみが含まれます。

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ATLANTIC SOUTH 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
AMERICAN SAMOA 0 0 250000
ケンタッキー 0 0 35000
オハイオ 0 2000 150000
KANSAS 0 0 51392
ミシガン 0 0 49167
ALABAMA 0 0 50000
... ...

パーセンタイルを配列として返す

個々の列の値を返す代わりに、 関数を percentiles_array() 使用して、動的配列型の単一列のパーセンタイルを返します。

構文

percentiles_array(Expr,パーセン タイル)

パラメーター

名前 必須 説明
expr string ✔️ 集計計算に使用する式。
パーセン タイル int、long、または動的 ✔️ 1 つ以上のコンマ区切りパーセンタイルまたはパーセンタイルの動的配列。 各パーセンタイルには、整数または長い値を指定できます。

戻り値

動的配列型の単一列として、グループ内の指定されたパーセンタイルの expr の推定値を返します。

コンマ区切りのパーセンタイル

複数のパーセンタイルは、 percentiles() のように複数の列ではなく、1 つの動的列の配列として取得できます。

TransformedSensorsData
| summarize percentiles_array(Value, 5, 25, 50, 75, 95), avg(Value) by SensorName

出力

結果テーブルには、最初の 10 行のみが表示されます。

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

パーセンタイルの動的配列

のパーセンタイル percentiles_array は、整数または浮動小数点数の動的配列で指定できます。 配列は、定数にする必要がありますが、リテラルにする必要はありません。

TransformedSensorsData
| summarize percentiles_array(Value, dynamic([5, 25, 50, 75, 95])), avg(Value) by SensorName

出力

結果テーブルには、最初の 10 行のみが表示されます。

SensorName percentiles_Value avg_Value
sensor-82 ["0.048141473520867069","0.24407515500271132","0.48974511106780577","0.74160998970950343","0.94587903204190071"] 0.493950914
sensor-130 ["0.049200214398937764","0.25735850440187535","0.51206374010048239","0.74182335059053839","0.95210342463616771"] 0.505111463
sensor-56 ["0.04857779335488676","0.24709868149337144","0.49668762923789589","0.74458470404241883","0.94889104840865857"] 0.497955018
sensor-24 ["0.051507199150534679","0.24803904945640423","0.50397070213183581","0.75653888126010793","0.9518782718727431"] 0.501084379
sensor-47 ["0.045991246974755672","0.24644331118208851","0.48089197707088743","0.74475142784472248","0.9518322864959039"] 0.49386228
sensor-135 ["0.05132897529660399","0.24204987641954018","0.48470113942206461","0.74275730068433621","0.94784079559229406"] 0.494817619
sensor-74 ["0.048914714739047828","0.25160926036445724","0.49832498850160978","0.75257887767110776","0.94932261924236094"] 0.501627252
sensor-173 ["0.048333149363009836","0.26084250046756496","0.51288012531934613","0.74964772791583412","0.95156058795294"] 0.505401226
sensor-28 ["0.048511161184567046","0.2547387968731824","0.50101318228599656","0.75693845702682039","0.95243122486483989"] 0.502066244
sensor-34 ["0.049980293859462954","0.25094722564949412","0.50914023067384762","0.75571549713447961","0.95176564809278674"] 0.504309494
... ... ...

最も近いランクのパーセンタイル

順序付けられた値のリストの P 番目のパーセンタイル (0 <P<= 100) は、昇順で並べ替えられたリストの最小の値です。 データの P パーセントが P 番目のパーセンタイル値以下です (パーセンタイルの Wikipedia 記事から)。

0 番目のパーセントを母集団の最小メンバーとして定義します。

Note

計算の近似特性を考えると、実際に返される値は、母集団のメンバーではない可能性があります。 最も近いランクの定義は、P=50 が中央値の補間定義に準拠していないことを意味します。 特定のアプリケーションに対してこの矛盾の有意性を評価する場合は、母集団のサイズと推定誤差を考慮する必要があります。

パーセンタイル単位の推定エラー

パーセンタイル集計では、 T-Digestを使用して概算値を算出できます。

Note

  • 推定エラーの限度は、要求されたパーセンタイルの値によって異なります。 最適な精度は、[0..100] のスケールの両端です。 パーセンタイルの 0 と 100 が分布の正確な最小値と最大値です。 精度はスケールの中央に向かって徐々に低下します。 中央値で最低で、1% で最大です。
  • エラー限度は、値ではなく、ランクで観測されます。 percentile(X, 50) が Xm の値を返したとします。 推定では、X の値の 49% 以上 51% 以下が Xm 以下になることが保証されます。 Xm と X の実際の中央値との差には、理論上の制限はありません。
  • 推定によって正確な値が返される場合もありますが、それがいつなのかを定義するための信頼できる条件はありません。