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 |
例
このセクションの例では、構文を使用して作業を開始する方法を示します。
この記事の例では、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 つの用語であるかのように 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
を適用する
次の例は、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 著) に基づいています。