Поделиться через


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

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

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

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

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

Примечание.

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

Синтаксис

percentilew(expr, weightExpr, percentile)

percentilesw(expr, weightExpr, percentiles)

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

Параметры

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

Возвраты

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

Примечание.

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

Примеры

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

Предположим, что вы будете повторяться измерять время (длительность) для завершения действия. Вместо записи каждого значения измерения вы записываете каждое значение длительности, округляя до 100 мс, и сколько раз появилось округленное значение (BucketSize).

Используется summarize percentilesw(Duration, BucketSize, ...) для вычисления заданных процентилей в "весовом" способе. Обработайте каждое значение длительности, как если бы оно повторялось во входных данных, не требуя материализации этих записей.

В следующем примере показаны весовые процентили. Использование следующего набора значений задержки в миллисекундах: { 1, 1, 2, 2, 2, 5, 7, 7, 12, 12, 15, 15, 15, 18, 21, 22, 26, 35 }

Чтобы уменьшить пропускную способность и хранилище, выполните предварительную агрегирование в следующие контейнеры: { 10, 20, 30, 40, 50, 100 } Подсчитывает количество событий в каждом контейнере, чтобы создать следующую таблицу:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable

В таблице отображается следующее:

  • Восемь событий в контейнере 10 мс (соответствующие подмножеству { 1, 1, 2, 2, 2, 5, 7, 7 })
  • Шесть событий в контейнере 20 мс (соответствующие подмножеству { 12, 12, 15, 15, 15, 18 })
  • Три события в контейнере 30 мс (соответствующие подмножеству { 21, 22, 26 })
  • Одно событие в контейнере 40 мс (соответствующее подмножеству { 35 })

На этом этапе исходные данные больше не доступны. Только количество событий в каждом контейнере. Чтобы вычислить процентиль из этих данных, используйте функцию percentilesw() . Для 50, 75 и 99,9 процентилей используйте следующий запрос:

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw(LatencyBucket, ReqCount, 50, 75, 99.9)

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

percentile_LatencyBucket_50 percentile_LatencyBucket_75 percentile_LatencyBucket_99_9
20 20 40

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

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

Синтаксис

percentilesw_array(expr, weightExpr, percentiles)

Параметры

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

Возвраты

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

Примеры

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

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, 50, 75, 99.9)

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

percentile_LatencyBucket
[20, 20, 40]

Динамический массив процентилей

let latencyTable = datatable (ReqCount:long, LatencyBucket:long) 
[ 
    8, 10, 
    6, 20, 
    3, 30, 
    1, 40 
];
latencyTable
| summarize percentilesw_array(LatencyBucket, ReqCount, dynamic([50, 75, 99.9]))

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

percentile_LatencyBucket
[20, 20, 40]