次の方法で共有


reduce 演算子

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

値の類似性に基づいて文字列のセットをグループ化します。

このようなグループごとに、演算子は patterncount、および representativeを返します。 patternは、*文字がワイルドカードを表すグループを最もよく表します。 countはグループ内の値の数であり、representativeはグループ内の元の値の 1 つです。

構文

T|reduce [kind=ReduceKind] byExpr [with [threshold=Threshold] [,characters=Characters]]

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

パラメーター

件名 タイプ Required 説明
Expr string ✔️ 削減する値。
しきい値 real 削減操作をトリガーするためにグループ化条件に一致するために必要な行の最小比率を決定する 0 ~ 1 の値。 既定値は 0.1 です。

大きな入力には、小さなしきい値を設定することをお勧めします。 しきい値が小さいほど、類似した値がグループ化され、結果として類似するグループが少なくなります。 しきい値を大きくすると、必要な類似性が低くなり、結果として類似度の低いグループが増えます。 を参照してください。
文字 string 用語間で区切られた文字の一覧。 既定値は、すべての非 ascii 数値です。 例については、「characters パラメーターの Behaviorを参照してください。
ReduceKind string 有効な値は sourceのみです。 sourceが指定されている場合、演算子はPatternで集計するのではなく、テーブル内の既存の行にPattern列を追加します。

返品

patterncount、およびrepresentativeというタイトルのグループと列と同じ数の行を含むテーブル。 patternは、*文字がワイルドカードまたは任意の挿入文字列のプレースホルダーを表すグループを最もよく表します。 countはグループ内の値の数であり、representativeはグループ内の元の値の 1 つです。

たとえば、 reduce by city の結果には次のものが含まれます。

パターン カウント Representative
San * 5,182 San Bernard
Saint * 2,846 Saint Lucy
Moscow 3726 Moscow
* -on- * 2730 One -on- One
Paris 2716 Paris

このセクションの例では、構文を使用して作業を開始する方法を示します。

この記事の例では、Samples データベースの StormEvents テーブルなど、ヘルプ クラスターので一般公開されているテーブルを使用します。

この記事の例では、Weather Analytics サンプル データStormEvents テーブルなど、一般公開されているテーブルを使用します。

小さいしきい値

このクエリは、数値の範囲を生成し、連結された文字列とランダムな整数を含む新しい列を作成し、新しい列ごとに特定の削減パラメーターを使用して行をグループ化します。

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.001 , characters = "X" 

出力

パターン カウント Representative
MachineLearning* 1000 MachineLearningX4

大きなしきい値

このクエリは、数値の範囲を生成し、連結された文字列とランダムな整数を含む新しい列を作成し、新しい列ごとに特定の削減パラメーターを使用して行をグループ化します。

range x from 1 to 1000 step 1
| project MyText = strcat("MachineLearningX", tostring(toint(rand(10))))
| reduce by MyText  with threshold=0.9 , characters = "X" 

出力

結果には、MyText 値が行の少なくとも 90% に表示されるグループのみが含まれます。

パターン カウント Representative
MachineLearning* 177 MachineLearningX9
MachineLearning* 102 MachineLearningX0
MachineLearning* 106 MachineLearningX1
MachineLearning* 96 MachineLearningX6
MachineLearning* 110 MachineLearningX4
MachineLearning* 100 MachineLearningX3
MachineLearning* 99 MachineLearningX8
MachineLearning* 104 MachineLearningX7
MachineLearning* 106 MachineLearningX2

パラメーターの動作 Characters

Characters パラメーターが指定されていない場合、すべての非 ascii 数値が用語区切り記号になります。

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str

出力

パターン カウント Representative
その他 10

ただし、"Z" が区切り記号であることを指定すると、str の各値が 2 つの用語であるかのように footostring(x)

range x from 1 to 10 step 1 | project str = strcat("foo", "Z", tostring(x)) | reduce by str with characters="Z"

出力

パターン カウント Representative
foo* 10 fooZ1

サニタイズされた入力に reduce を適用する

次の例は、reduce 演算子を "サニタイズ済み" 入力に適用する方法を示しています。この入力では、減らす前に列の GUID が置き換えられます。

トレース テーブルのいくつかのレコードから始めます。 次に、ランダムな GUID を含む [テキスト] 列を減らします。 ランダム GUID が reduce 操作を妨げるので、すべてを文字列 "GUID" に置き換えます。 次に、reduce 操作を実行します。 '-' または '_' 文字が埋め込まれた他の "準ランダム" 識別子がある場合は、文字を非用語ブレーカーとして扱います。

Trace
| take 10000
| extend Text = replace(@"[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}", "GUID", Text)
| reduce by Text with characters="-_"

Note

reduce 演算子の実装は、主として『イベント ログのパターン検出のためのデータ クラスタリング アルゴリズム』 (Risto Vaarandi 著) に基づいています。