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

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

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

Сведения о вычислении взвешанных процентилей см. в разделе percentilesw().

Примечание

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

Синтаксис

percentile(Expr,Процентиль)

percentiles(Expr,Процентили)

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

Параметры

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

Возвращаемое значение

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

Примечание

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

Примеры

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

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

StormEvents | summarize percentile(DamageProperty, 95) by State

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

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

Состояние percentile_DamageProperty_95
ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ 0
Флорида 40 000
Грузия 143333
Миссисипи 80 000
АМЕРИКАНСКОЕ САМОА 250 000
КЕНТУККИ 35 000
ОГАЙО 150000
Канзас 51392
Мичиган 49167
АЛАБАМА 50 000

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

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

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

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

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

Состояние percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ЮЖНО-АТЛАНТИЧЕСКИЕ ШТАТЫ 0 0 0
Флорида 0 0 40 000
Грузия 0 0 143333
Миссисипи 0 0 80 000
АМЕРИКАНСКОЕ САМОА 0 0 250 000
КЕНТУККИ 0 0 35 000
ОГАЙО 0 2000 150000
Канзас 0 0 51392
Мичиган 0 0 49167
АЛАБАМА 0 0 50 000
... ...

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

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

Синтаксис

percentiles_array(Expr,Процентили)

Параметры

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

Возвращаемое значение

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

Примеры

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

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

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-й процентиль, чтобы быть наименьшим элементом генеральной совокупности.

Примечание

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

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

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

Примечание

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