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


Оператор sample

Область применения: ✅Microsoft Fabric

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

Примечание.

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

Синтаксис

T| sampleNumberOfRows

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

Параметры

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

Примеры

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

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

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

Создание примера

Этот запрос создает диапазон чисел, примеров одного значения, а затем дублирует этот пример.

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

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

x
74
63

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

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

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

x
24
24

Создание образца определенного процента данных

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

StormEvents | where rand() < 0.1

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

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

StartTime EndTime EpisodeId EventId Государство EventType
2007-01-01T00:00:00Z 2007-01-20T10:24:00Z 2403 11914 ИНДИАНА Наводнение
2007-01-01T00:00:00Z 2007-01-24T18:47:00Z 2408 11930 ИНДИАНА Наводнение
2007-01-01T00:00:00Z 2007-01-01T12:00:00Z 1979 12631 ДЕЛАВЭР Сильный дождь
2007-01-01T00:00:00Z 2007-01-01T00:00:00Z 2592 13208 СЕВЕРНАЯ КАРОЛИНА Гроза ветер
2007-01-01T00:00:00Z 2007-01-31T23:59:00Z 1492 7069 МИННЕСОТА Засуха
2007-01-01T00:00:00Z 2007-01-31T23:59:00Z 2240 10858 ТЕХАС Засуха
... ... ... ... ... ...

Создание примера ключей

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

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

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

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

StartTime EndTime EpisodeId EventId Государство EventType
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 ФЛОРИДА Сильный дождь
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 ФЛОРИДА Торнадо
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 АТЛАНТИЧЕСКИЙ ЮГ Смерч
2007-12-07T14:00:00Z 2007-12-08T04:00:00Z 13183 73241 АМЕРИКАНСКОЕ САМОА Вспышка наводнения
2007-12-11T21:45:00Z 2007-12-12T16:45:00Z 12826 70787 КАНЗАС Наводнение
2007-12-13T09:02:00Z 2007-12-13T10:30:00Z 11780 64725 КЕНТУККИ Наводнение
... ... ... ... ... ...