次の方法で共有


reduce 演算子

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

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

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

構文

T | reduce [kind = ReduceKind] by Expr [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

小さいしきい値

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" 

出力

パターン カウント 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 を適用する

以下の例に、グループ分けの前にグループ分け対象の列に含まれる GUID を置き換えて "サニタイズ" した入力に reduce 演算子を適用する方法を示します。

// Start with a few records from the Trace table.
Trace | take 10000
// We will reduce the Text column which includes random GUIDs.
// As random GUIDs interfere with the reduce operation, replace them all
// by the string "GUID".
| extend Text=replace_regex(Text, @"[[:xdigit:]]{8}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{4}-[[:xdigit:]]{12}", @"GUID")
// Now perform the reduce. In case there are other "quasi-random" identifiers with embedded '-'
// or '_' characters in them, treat these as non-term-breakers.
| reduce by Text with characters="-_"

autocluster

Note

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