Оператор sample
Область применения: ✅Microsoft Fabric✅✅
Возвращает до указанного числа случайных строк из входной таблицы.
Примечание.
-
sample
предназначен для скорости, а не даже распределения значений. В частности, это означает, что он не будет производить "справедливые" результаты, если используются после операторов, которые объединение двух наборов данных различных размеров (напримерunion
, операторов илиjoin
операторов). Рекомендуется использоватьsample
сразу после ссылки на таблицу и фильтров. -
sample
является недетерминированным оператором и возвращает другой результирующий набор при каждом вычислении во время запроса. Например, следующий запрос выдает две разные строки (даже если вы ожидаете, что они будут возвращать одну и ту же строку дважды).
Синтаксис
T| sample
NumberOfRows
Дополнительные сведения о соглашениях синтаксиса.
Параметры
Имя (название) | 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 | КЕНТУККИ | Наводнение |
... | ... | ... | ... | ... | ... |