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 не существует.
- Оценка иногда может привести к точному значению, но нет надежных условий, чтобы определить, когда это произойдет.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по