次の方法で共有


percentilew()、percentilesw() (集計関数)

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

percentilew()関数は、expr で定義された母集団の指定されたnearest-rank パーセンタイルの加重推定値を計算します。 percentilesw() は、 percentilew()と同様に機能します。 ただし、 percentilesw() では複数の加重百分位数値を一度に計算できます。これは、各加重百分位数値を個別に計算するよりも効率的です。

加重百分位数は、入力データセット内の各値に重みを与えることによって、データセット内の百分位数を計算します。 このメソッドでは、各値は重みと等しい回数繰り返されると見なされ、パーセンタイルの計算に使用されます。 特定の値をより重要にすることで、重み付けパーセンタイルは、"重み付け" 方式でパーセンタイルを計算する方法を提供します。

重み付けされていない百分位数を計算するには、「 百分位数()を参照してください。

Note

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

構文

percentilew(expr, weightExpr, percentile)

percentilesw(expr, weightExpr, percentiles)

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

パラメーター

件名 タイプ Required 説明
expr string ✔️ 集計計算に使用する式。
weightExpr long ✔️ 各値を指定する重み。
percentile int または long ✔️ パーセンタイルを指定する定数。
パーセン タイル int または long ✔️ 1 つ以上のコンマ区切り百分位数。

返品

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

Note

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

加重百分位数の計算

完了するアクションを実行する時間 (Duration) を繰り返し測定するものとします。 測定のすべての値を記録する代わりに、100 ミリ秒に丸めた Duration の各値と、丸めた値の表示回数 (BucketSize) を記録します。

summarize percentilesw(Duration, BucketSize, ...) を使用して、「加重」方法で指定されたパーセンタイルを計算します。 Duration の各値は、入力で BucketSize 回数繰り返されたかのように処理します。実際にそれらのレコードを具体化する必要はありません。

重み付けパーセンタイルの例を次に示します。 ミリ秒単位の待機時間の値のセットを使用する: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }

帯域幅とストレージを減らすには、バケット ({ 10, 20, 30, 40, 50, 100 }) に対して事前集計を行います。 各バケット内のイベント数をカウントして、次の表を作成します。

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

次の表が表示されます。

  • 10 ミリ秒バケット内の 8 つのイベント (サブセット { 1, 1, 2, 2, 2, 5, 7, 7 } に対応)
  • 20 ミリ秒バケット内の 6 つのイベント (サブセット { 12, 12, 15, 15, 15, 18 } に対応)
  • 30 ミリ秒バケット内の 3 つのイベント (サブセット { 21, 22, 26 } に対応)
  • 40 ミリ秒バケット内の 1 つのイベント (サブセット { 35 } に対応)

この時点で、元のデータは使用できなくなりました。 各バケット内のイベント数のみ。 このデータからパーセンタイルを計算するには、percentilesw() 関数を使用します。 50、75、99.9 パーセンタイルの場合は、次のクエリを使用します。

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

出力

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

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

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

構文

percentilesw_array(expr, weightExpr, percentiles)

パラメーター

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

返品

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

コンマ区切りの百分位数

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

出力

percentile_LatencyBucket
[20, 20, 40]

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

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

出力

percentile_LatencyBucket
[20, 20, 40]