sample 運算子
適用於:✅Microsoft網狀架構✅Azure 數據✅總管 Azure 監視器✅Microsoft Sentinel
從輸入數據表傳回最多指定的隨機數據列數目。
注意
sample
是針對速度,而不是甚至分配值。 具體來說,這表示在運算符之後使用不同大小的聯集 2 數據集(例如union
或join
運算符)時,它不會產生「公平」結果。 建議您在資料表參考和篩選之後立即使用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)