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


Оператор sample

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

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

Примечание.

  • sample предназначен для скорости, а не даже распределения значений. В частности, это означает, что он не будет производить "справедливые" результаты, если используются после операторов, которые объединение двух наборов данных различных размеров (например union , операторов или join операторов). Рекомендуется использовать sample сразу после ссылки на таблицу и фильтров.
  • sample является недетерминированным оператором и будет возвращать другой результирующий набор при каждом вычислении во время запроса. Например, следующий запрос выдает две разные строки (даже если вы ожидаете, что они будут возвращать одну и ту же строку дважды).

Синтаксис

T | sample NumberOfRows

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

Параметры

Имя (название) Type Обязательно Описание
T string ✔️ Входное табличное выражение.
NumberOfRows int, long или real ✔️ Количество возвращаемых строк. Можно указать любое числовое выражение.

Примеры

let _data = range x from 1 to 100 step 1;
let _sample = _data | sample 1;
union (_sample), (_sample)

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

x
83
3

Чтобы убедиться, что в приведенном выше _sample примере вычисляется один раз, можно использовать функцию materialize():

let _data = range x from 1 to 100 step 1;
let _sample = materialize(_data | sample 1);
union (_sample), (_sample)

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

x
34
34

Для выборки определенного процента данных (а не указанного количества строк) можно использовать

StormEvents | where rand() < 0.1

Чтобы использовать примеры ключей, а не строк (например, пример 10 идентификаторов и получение всех строк для этих идентификаторов), можно использовать sample-distinct в сочетании с оператором in .

let sampleEpisodes = StormEvents | sample-distinct 10 of EpisodeId;
StormEvents
| where EpisodeId in (sampleEpisodes)