percentilew(), percentilesw() (функция агрегирования)
Область применения: ✅Microsoft Fabric✅
Функция percentilew()
вычисляет взвешированную оценку для указанного ближайшего процентиля ранга населения, определенного экспром.
percentilesw()
работает аналогично percentilew()
.
percentilesw()
Однако можно вычислить несколько взвешированных значений процентиля одновременно, что более эффективно, чем вычисление каждого взвешированного процентильного значения отдельно.
Весовые процентили вычисляют процентили в наборе данных, давая каждому значению в входном наборе данных вес. В этом методе каждое значение считается повторяться несколько раз, равных его весу, который затем используется для вычисления процентиля. Предоставляя больше важности определенным значениям, взвешанные процентили обеспечивают способ вычисления процентилей "взвешанным" способом.
Чтобы вычислить невесомые процентили, см . процентиль().
Синтаксис
percentilew(
expr,
weightExpr,
percentile)
percentilesw(
expr,
weightExpr,
percentiles)
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | Type | Обязательно | Описание |
---|---|---|---|
expr | string |
✔️ | Выражение, используемое для вычисления агрегирования. |
weightExpr | 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 |
✔️ | Выражение, используемое для вычисления агрегирования. |
Процентили | реальный или динамический | ✔️ | Один или несколько разделенных запятыми процентилей или динамический массив процентилей. Каждый процентиль должен быть реальным значением. |
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] |