percentile(), percentiles() (функция агрегирования)
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft 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.
- Оценка иногда может привести к точному значению, но нет надежных условий, чтобы определить, когда это будет в случае.