reduce 演算子
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
値の類似性に基づいて文字列のセットをグループ化します。
このようなグループごとに、演算子は pattern
、 count
、および 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 列を追加します。 |
返品
pattern
、count
、および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 つの用語 ( foo
と tostring(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="-_"
関連するコンテンツ
Note
reduce
演算子の実装は、主として『イベント ログのパターン検出のためのデータ クラスタリング アルゴリズム』 (Risto Vaarandi 著) に基づいています。