diffpatterns プラグイン
同じ構造の 2 つのデータセットを比較し、2 つのデータセット間の違いを特徴付けする不連続属性 (ディメンション) のパターンを検索します。 このプラグインは、evaluate
演算子を使用して呼び出されます。
diffpatterns
は、エラーを分析するために開発されました (たとえば、特定の時間枠内のエラーと非障害を比較するなど)。ただし、同じ構造の 2 つのデータセット間で違いを見つける可能性があります。
Note
diffpatterns
は、重要なパターン (セット間でデータの差分の部分をキャプチャする) を検索することを目的としており、行単位の違いを示すものではありません。
構文
T | evaluate diffpatterns(
SplitColumn,
SplitValueA,
SplitValueB [,
WeightColumn,
Threshold,
MaxDimensions,
CustomWildcard,
...])
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
SplitColumn | string |
✔️ | クエリをデータセットに分割する方法をアルゴリズムに指示する列名。 SplitValueA 引数と SplitValueB 引数に指定された値に従って、アルゴリズムはクエリを "A" と "B" の 2 つのデータセットに分割し、それらの違いを分析します。 そのため、列を分割するには、少なくとも 2 つの個別の値が必要です。 |
SplitValueA | string |
✔️ | 指定された SplitColumn のいずれかの値の文字列形式。 SplitColumn にこの値を持つすべての行データセット "A" と見なされます。 |
SplitValueB | string |
✔️ | 指定された SplitColumn のいずれかの値の文字列形式。 SplitColumn にこの値を持つすべての行データセット "B" と見なされます。 |
WeightColumn | string |
指定した重みに従って入力の各行を考慮するために使用される列。 int 、long 、real などの数値列の名前である必要があります。 既定では、各行の重みは "1" です。 既定値を使用するには、チルダ ( ~ ) を入力します。 weight 列の一般的な使用方法は、既に各行に埋め込まれているデータのサンプリングまたはバケット/集計を考慮することです。例: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count) |
|
しきい値 | real |
0.015 から 1 の範囲の実数。 この値は、2 つのセット間の最小パターン比の差を設定します。 既定値は 0.05 です。 既定値を使用するには、チルダ ( ~ ) を入力します。例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", 0.04) |
|
MaxDimensions | int |
結果パターンごとの無相関ディメンションの最大数を設定します。 制限を指定すると、クエリの実行時間が短縮されます。 既定値は無制限です。 既定値を使用するには、チルダ ( ~ ) を入力します。例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", 3) |
|
CustomWildcard | string |
現在のパターンにこの列に対する制限がないことを示す特定の種類のワイルドカード値を結果テーブルに設定します。 既定値は null ですが、既定値が空の文字列である文字列列を除きます。 既定値がデータ内で有効な値である場合は、別のワイルドカード値を使用する必要があります。 たとえば、* のようにします。 既定値を使用するには、チルダ ( ~ ) を入力します。例: T | extend splitColumn = iff(request-responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", "~", "~", "~", int(-1), double(-1), long(0), datetime(1900-1-1)) |
返品
diffpatterns
は、2 つのセット内のデータのさまざまな部分をキャプチャする小さなパターン セットを返します (つまり、最初のデータセット内の行の大部分と 2 番目のセットの行の割合が低いパターン)。 各パターンは、結果内の行によって表されます。
diffpatterns
の結果は、次の列を返します。
SegmentId: 現在のクエリのパターンに割り当てられた ID (注: ID は、クエリの繰り返しで同じであるとは限りません)。
CountA: Set A のパターンによってキャプチャされた行の数 (Set A は
where tostring(splitColumn) == SplitValueA
と同じです)。CountB: Set B のパターンによってキャプチャされた行の数 (Set B は
where tostring(splitColumn) == SplitValueB
と同じです)。PercentA: パターンによってキャプチャされた Set A 内の行の割合 (100.0 * CountA / count(SetA))。
PercentB: パターンによってキャプチャされた Set B 内の行の割合 (100.0 * CountB / count(SetB))。
PercentDiffAB: A と B 間の絶対パーセント ポイントの差 (|PercentA - PercentB|) は、2 つのセットの違いを説明するパターンの有意性の主要なメジャーです。
残りの列: 入力の元のスキーマであり、パターンを記述します。各行 (パターン) は、列の非ワイルドカード値の積集合を表します (行内の非ワイルドカード値ごとに
where col1==val1 and col2==val2 and ... colN=valN
に相当します)。
パターンごとに、パターンに設定されていない列 (つまり、特定の値に制限なし) にはワイルドカード値が含まれ、既定では null になります。 ワイルドカードを手動で変更する方法については、下記の「引数」セクションを参照してください。
- 注: 多くの場合、パターンは区別されません。 重複している可能性があり、通常は元のすべての行をカバーしているわけではありません。 一部の行は、どのパターンにも当てはまらない場合があります。
ヒント
例
StormEvents
| where monthofyear(StartTime) == 5
| extend Damage = iff(DamageCrops + DamageProperty > 0 , 1 , 0)
| project State , EventType , Source , Damage, DamageCrops
| evaluate diffpatterns(Damage, "0", "1" )
出力
セグメント ID | CountA | CountB | PercentA | PercentB | PercentDiffAB | 都道府県 | EventType | ソース | DamageCrops |
---|---|---|---|---|---|---|---|---|---|
0 | 2278 | 93 | 49.8 | 7.1 | 42.7 | ひょう | 0 | ||
1 | 779 | 512 | 17.03 | 39.08 | 22.05 | 雷雨風 | |||
2 | 1098 | 118 | 24.01 | 9.01 | 15 | 訓練を受けた観測員 | 0 | ||
3 | 136 | 158 | 2.97 | 12.06 | 9.09 | 新聞 | |||
4 | 359 | 214 | 7.85 | 16.34 | 8.49 | 鉄砲水 | |||
5 | 50 | 122 | 1.09 | 9.31 | 8.22 | アイオワ州 | |||
6 | 655 | 279 | 14.32 | 21.3 | 6.98 | 法執行機関 | |||
7 | 150 | 117 | 3.28 | 8.93 | 5.65 | 洪水 | |||
8 | 362 | 176 | 7.91 | 13.44 | 5.52 | 非常事態担当マネージャー |