共用方式為


sample 運算符

從輸入數據表傳回最多指定的隨機數據列數目。

注意

  • sample 是針對速度,而不是甚至分配值。 具體來說,這表示在運算符之後使用不同大小的聯集 2 數據集(例如 unionjoin 運算符)時,它不會產生「公平」結果。 建議您在資料表參考和篩選之後立即使用 sample
  • sample 是一個不具決定性的運算符,而且會在每次查詢期間評估結果集時傳回不同的結果集。 例如,下列查詢會產生兩個不同的數據列(即使一個預期傳回相同的數據列兩次也一樣)。

語法

T | sample NumberOfRows

深入瞭解 語法慣例

參數

姓名 類型​​ 必要 描述
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 標識符並取得這些標識碼的所有數據列),您可以搭配 in 運算符使用sample-distinct

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