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

Переключайте службы с помощью раскрывающегося списка Версия. Дополнительные сведения о навигации.
Область применения: ✅ Microsoft Fabric ✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel

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

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

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

Note

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

Syntax

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

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

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

Parameters

Name Type Required Description
expr string ✔️ Выражение, используемое для вычисления агрегирования.
percentile real ✔️ Константа, указывающая процентиль.
percentiles real ✔️ Один или несколько разделенных запятыми процентилей.

Returns

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

Note

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

Examples

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

Примеры, приведенные в этой статье, используют общедоступные таблицы в кластере справки, например StormEvents таблицу в базе данных Samples .

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

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

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

StormEvents | summarize percentile(DamageProperty, 95) by State

Output

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

State percentile_DamageProperty_95
ЮЖНАЯ АТЛАНТИКА 0
FLORIDA 40000
GEORGIA 143333
MISSISSIPPI 80000
АМЕРИКАНСКОЕ САМОА 250000
KENTUCKY 35000
OHIO 150000
KANSAS 51392
MICHIGAN 49167
ALABAMA 50000

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

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

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

Output

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

State percentile_DamageProperty_5 percentile_DamageProperty_50 percentile_DamageProperty_95
ЮЖНАЯ АТЛАНТИКА 0 0 0
FLORIDA 0 0 40000
GEORGIA 0 0 143333
MISSISSIPPI 0 0 80000
АМЕРИКАНСКОЕ САМОА 0 0 250000
KENTUCKY 0 0 35000
OHIO 0 2000 150000
KANSAS 0 0 51392
MICHIGAN 0 0 49167
ALABAMA 0 0 50000
... ...

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

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

Syntax

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

Parameters

Name Type Required Description
expr string ✔️ Выражение, используемое для вычисления агрегирования.
percentiles реальный или динамический ✔️ Один или несколько разделенных запятыми процентилей или динамический массив процентилей. Каждый процентиль должен быть реальным значением.

Returns

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

Examples

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

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

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

Output

В таблице результатов отображаются только первые 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

Output

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

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

Note

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

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

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

Note

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