Share via


sample 演算子

入力テーブルから指定した数までのランダム行を返します。

Note

  • sample は、値の均等な分布よりもスピードを重視しています。 具体的には、異なるサイズの 2 つのデータセット (演算子や join 演算子など) を結合する演算子の後に使用した場合、"公平な" 結果は生成されないことをunion意味します。 テーブルの参照とフィルターの直後に sample を使用することをお勧めします。
  • sample は非決定論的演算子であり、クエリ中に評価されるごとに異なる結果セットが返されます。 たとえば、次のクエリを使用すると、(同じ行が 2 回返される場合でも) 2 つの異なる行が生成されます。

構文

T| sampleNumberOfRows

構文規則について詳しく知る。

パラメーター

名前 必須 説明
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 が 1 回だけ計算されることを確実にするために、次のように 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

行ではなくキーをサンプリングするには (たとえば、サンプルの ID を 10 個取得し、これらの ID の行をすべて取得する)、in 演算子と組み合わせて sample-distinct を使用できます。

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