Operátor sample

Vrátí až zadaný počet náhodných řádků ze vstupní tabulky.

Poznámka

  • sample je určená pro rychlost, nikoli pro rovnoměrné rozdělení hodnot. Konkrétně to znamená, že při použití po operátorech, které sjednocují 2 datové sady různých velikostí (jako union jsou operátory nebo join ), nevytvoří "spravedlivé" výsledky. Doporučujeme použít sample hned za odkazem na tabulku a filtry.
  • sample je ne deterministický operátor a při každém vyhodnocení během dotazu vrátí jinou sadu výsledků. Například následující dotaz vynese dva různé řádky (i když by jeden z nich očekával, že vrátí stejný řádek dvakrát).

Syntax

T| sampleNumberOfRows

Přečtěte si další informace o konvencích syntaxe.

Parametry

Název Typ Vyžadováno Popis
T string ✔️ Vstupní tabulkový výraz.
NumberOfRows int, long nebo real ✔️ Počet řádků, které se mají vrátit. Můžete zadat libovolný číselný výraz.

Příklady

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

Výstup

x
83
3

Abyste zajistili, že se ve výše uvedeném _sample příkladu vypočítá jednou, můžete použít funkci materialize():

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

Výstup

x
34
34

Pokud chcete vzorkovat určité procento dat (místo zadaného počtu řádků), můžete použít

StormEvents | where rand() < 0.1

Pokud chcete místo řádků vzorkovat klíče (například 10 ID a získat všechny řádky pro tato ID), můžete použít sample-distinct v kombinaci s operátorem in .

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