percentilew()、percentilesw() (集計関数)
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft 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] |