percentile(), percentiles() (функция агрегирования)

Область применения: ✅Microsoft Fabric✅Azure Data ExplorerAzure MonitorMicrosoft Sentinel

Функция percentile() вычисляет оценку для указанного ближайшего процентиля ранга населения, определенного экспром. Точность зависит от плотности заполнения области процентиля.

percentiles() работает аналогично percentile(). percentiles() Однако можно вычислить несколько значений процентиля одновременно, что более эффективно, чем вычисление каждого процентильного значения отдельно.

Чтобы вычислить взвешанные процентилии, см . процентиль().

Примечание.

Эта функция используется в сочетании с оператором сводки.

Синтаксис

percentile(expr, percentile)

percentiles(expr, percentiles)

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
expr string ✔️ Выражение, используемое для вычисления агрегирования.
процентиль int или long ✔️ Константа, указывающая процентиль.
Процентили int или long ✔️ Один или несколько разделенных запятыми процентилей.

Возвраты

Возвращает таблицу с оценками для экспра указанных процентилей в группе, каждая из которых содержит отдельный столбец.

Примечание.

Чтобы вернуть процентили в одном столбце, ознакомьтесь с разделом Return Percentiles в виде массива.

Примеры

Вычисление одного процентиля

В следующем примере показано значение DamageProperty , превышающее 95 % выборки набора и меньше 5% набора выборок.

StormEvents | summarize percentile(DamageProperty, 95) by State

Выходные данные

Показанная таблица результатов содержит только первые 10 строк.

State percentile_DamageProperty_95
ЮЖНАЯ АТЛАНТИКА 0
FLORIDA 40000
ДЖОРДЖИЯ 143333
МИССИСИПИ 80 000
АМЕРИКАНСКОЕ САМОА 250000
KENTUCKY 35 000
OHIO 150 000
КАНЗАС 51392
МИЧИГАН 49167
АЛАБАМА 50000

Вычисление нескольких процентилей

В следующем примере показаны значения одновременно вычисляемых DamageProperty с использованием 5, 50 (медиана) и 95.

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

Выходные данные

Показанная таблица результатов содержит только первые 10 строк.

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ЮЖНАЯ АТЛАНТИКА 0 0 0
FLORIDA 0 0 40000
ДЖОРДЖИЯ 0 0 143333
МИССИСИПИ 0 0 80 000
АМЕРИКАНСКОЕ САМОА 0 0 250000
KENTUCKY 0 0 35 000
OHIO 0 2000 150 000
КАНЗАС 0 0 51392
МИЧИГАН 0 0 49167
АЛАБАМА 0 0 50000
... ...

Возврат процентилей в виде массива

Вместо возврата значений в отдельных столбцах используйте percentiles_array() функцию для возврата процентилей в одном столбце динамического типа массива.

Синтаксис

percentiles_array(expr, percentiles)

Параметры

Имя (название) Type Обязательно Описание
expr string ✔️ Выражение, используемое для вычисления агрегирования.
Процентили int, long или dynamic ✔️ Один или несколько разделенных запятыми процентилей или динамический массив процентилей. Каждый процентиль может быть целым или длинным значением.

Возвраты

Возвращает оценку для экспра указанных процентилей в группе в виде одного столбца динамического типа массива.

Примеры

Процентили, разделенные запятыми

Несколько процентилей можно получить в виде массива в одном динамическом столбце, а не в нескольких столбцах, как с процентилями().

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

Выходные данные

В таблице результатов отображаются только первые 10 строк.

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

Ближайший процентиль ранга

P-th percentile (0 <P<= 100) списка упорядоченных значений, отсортированных по возрастанию, является наименьшим значением в списке. Процент данных P меньше или равен значению процентиля P-th (из статьи Википедии по процентилям).

Определите 0-й процентиль, чтобы быть наименьшим членом популяции.

Примечание.

Учитывая приблизительный характер вычисления, фактическое возвращаемое значение не может быть членом совокупности. Определение ближайшего ранга означает, что P=50 не соответствует интерполятивному определению медиана. При оценке важности этого несоответствия для конкретного приложения следует учитывать размер совокупности и ошибку оценки.

Ошибка оценки в процентилях

Статистическая оценка процентилей предоставляет приблизительное значение с помощью T-Digest.

Примечание.

  • Границы ошибки оценки изменяются со значением запрошенного процентиля. Лучшая точность находится в обоих концах шкалы [0..100]. Процентильы 0 и 100 являются точными и максимальными значениями распределения. Точность постепенно снижается к середине шкалы. Это худшее на медиане и ограничено на 1%.
  • Границы ошибки наблюдаются на диапазоне, а не на значении. Предположим, процентиль (X, 50) вернул значение Xm. Оценка гарантирует, что по крайней мере 49% и не более 51% значений X меньше или равно Xm. Нет теоретических ограничений на разницу между Xm и фактическим медианом значении X.
  • Оценка иногда может привести к точному значению, но нет надежных условий, чтобы определить, когда это будет в случае.