Sdílet prostřednictvím


Operátor sample

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

Poznámka:

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

Syntaxe

T | sample NumberOfRows

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

Parametry

Název Type Pož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

linka
83
3

Pokud chcete zajistit, aby se výše uvedený _sample příklad vypočítal 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

linka
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 vzorkovat klíče místo řádků (například vzorek 10 ID a získat všechny řádky těchto ID), můžete je použít sample-distinct v kombinaci s operátorem in .

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