共用方式為


sample 運算子

從輸入資料表的隨機資料列中,傳回特定上限數目的資料表。

注意

  • sample 適用於速度,而不是平均分佈值。 具體來說,如果運算符在等量 2 個不同大小的聯集數據集 (,例如 unionjoin 運算子) 之後使用,它就不會產生「公平」結果。 建議您在資料表參考和篩選條件之後,使用 sample
  • sample 是不具決定性的運算子,且在每次查詢期間進行評估時,都會傳回不同的結果集。 例如,下列查詢會產生兩個不同的資料列 (即使您預期會傳回相同的資料列兩次)。

語法

T| sampleNumberOfRows

深入瞭解 語法慣例

參數

名稱 類型 必要 Description
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)