percentile(), percentiles() (聚合函數)
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
此percentile()
函式會計算expr所定義母體擴展之指定最接近排名百分位數的估計值。
精確度取決於百分位數區域中的母體密度。
percentiles()
的運作方式類似於 percentile()
。 不過, percentiles()
可以一次計算多個百分位數值,這比個別計算每個百分位數值更有效率。
若要計算加權百分位數,請參閱 percentilesw()。
注意
此函式會與 summarize 運算子搭配使用。
語法
percentile(
expr,
百分位數)
percentiles(
expr,
百分位數)
深入瞭解 語法慣例。
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
expr | string |
✔️ | 要用於匯總計算的表達式。 |
百分比 | int 或long | ✔️ | 指定百分位數的常數。 |
percentiles | int 或long | ✔️ | 一或多個逗號分隔百分位數。 |
傳回
傳回數據表,其中包含群組中指定百分位數的估計值,每個都位於個別的數據行中。
注意
若要傳回單一數據行中的百分位數,請參閱 以數位列傳回百分位數。
範例
計算單一百分位數
下列範例顯示大於樣本集 95% 且小於 5% 樣本集的值 DamageProperty
。
StormEvents | summarize percentile(DamageProperty, 95) by State
輸出
顯示的結果數據表只包含前10個數據列。
州/省 | percentile_DamageProperty_95 |
---|---|
大西洋南部 | 0 |
佛羅里達州 | 40000 |
喬治亞州 | 143333 |
密西西比州 | 80000 |
美屬薩摩亞 | 250000 |
肯塔基州 | 35000 |
俄亥俄州 | 150000 |
堪薩斯州 | 51392 |
密西根州 | 49167 |
阿拉巴馬州 | 50000 |
計算多個百分位數
下列範例顯示使用5、50(中位數)和95同時計算的值 DamageProperty
。
StormEvents | summarize percentiles(DamageProperty, 5, 50, 95) by State
輸出
顯示的結果數據表只包含前10個數據列。
州/省 | percentile_DamageProperty_5 | percentile_DamageProperty_50 | percentile_DamageProperty_95 |
---|---|---|---|
大西洋南部 | 0 | 0 | 0 |
佛羅里達州 | 0 | 0 | 40000 |
喬治亞州 | 0 | 0 | 143333 |
密西西比州 | 0 | 0 | 80000 |
美屬薩摩亞 | 0 | 0 | 250000 |
肯塔基州 | 0 | 0 | 35000 |
俄亥俄州 | 0 | 2000 | 150000 |
堪薩斯州 | 0 | 0 | 51392 |
密西根州 | 0 | 0 | 49167 |
阿拉巴馬州 | 0 | 0 | 50000 |
... | ... |
以陣列的形式傳回百分位數
使用 函 percentiles_array()
式傳回動態數位類型之單一數據行中的百分位數,而不是傳回個別數據行中的值。
語法
percentiles_array(
expr,
百分位數)
參數
姓名 | 類型 | 必要 | 描述 |
---|---|---|---|
expr | string |
✔️ | 要用於匯總計算的表達式。 |
percentiles | int、long 或 dynamic | ✔️ | 一或多個逗號分隔百分位數或動態百分位數數位。 每個百分位數可以是整數或長值。 |
傳回
傳回群組中指定百分位數的估計值,做為動態數位類型的單一數據行。
範例
逗號分隔百分位數
您可以在單一動態數據行中以數位的形式取得多個百分位數,而不是在多個數據行中取得,如同百分位數() 一樣。
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 個百分位數值(來自百分位數的維琪百科文章)。
將第0個百分位數定義為母體中最小的成員。
百分位數的估計錯誤
百分位數匯總會使用 T-Digest 提供近似值。
注意
- 估計錯誤的界限會隨著要求百分位數的值而有所不同。 最佳精確度是在 [0..100] 小數位數的兩端。 百分位數 0 和 100 是分佈的確切最小值和最大值。 精確度會逐漸減少到小數位數的中間。 這是最差的中位數,上限為1%。
- 錯誤界限是在排名上觀察到,而不是在值上觀察到。 假設 percentile(X, 50) 傳回 Xm 的值。 估計值保證至少 49% 和最多 51% 的 X 值小於或等於 Xm。 Xm 與 X 的實際中位數值之間沒有理論限制。
- 估計有時可能會導致精確的值,但沒有可靠的條件可定義何時會發生這種情況。