diffpatterns プラグイン

同じ構造の 2 つのデータセットを比較し、2 つのデータセット間の違いを特徴付けする不連続属性 (ディメンション) のパターンを検索します。 このプラグインは、evaluate演算子*を使用して呼び出し*ます。

diffpatterns は、障害を分析するために開発されました (たとえば、特定の時間枠内の障害と非障害を比較するなど)。

Note

diffpatterns は、重要なパターン (セット間でデータの差分の部分をキャプチャする) を検索することを目的としており、行単位の違いを示すものではありません。

構文

T | evaluate diffpatterns(SplitColumn,SplitValueA,SplitValueB [,WeightColumn,Threshold,MaxDimensions,CustomWildcard, ...])

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

パラメーター

名前 必須 説明
SplitColumn string ✔️ クエリをデータセットに分割する方法をアルゴリズムに指示する列名。 SplitValueA 引数と SplitValueB 引数に指定された値に従って、アルゴリズムはクエリを "A" と "B" の 2 つのデータセットに分割し、それらの違いを分析します。 そのため、列を分割するには、少なくとも 2 つの個別の値が必要です。
SplitValueA string ✔️ 指定された SplitColumn 内の値の 1 つの文字列表現。 SplitColumn でこの値を持つすべての行は、データセット "A" と見なされます。
SplitValueB string ✔️ 指定された SplitColumn 内の値の 1 つの文字列表現。 SplitColumn でこの値を持つすべての行は、データセット "B" と見なされます。
WeightColumn string 指定した重さに従って入力の各行を考慮するために使用される列。 、、 などのintlongreal数値列の名前を指定する必要があります。 既定では、各行の重みは "1" です。 既定値を使用するには、チルダ を入力します。 ~ weight 列の一般的な使用方法は、既に各行に埋め込まれているデータのサンプリングまたはバケット/集計を考慮することです。

例 : T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count)
しきい値 long 0.015 から 1 の範囲の long。 この値は、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 です。 ワイルドカードを手動で変更する方法については、下記の「引数」セクションを参照してください。

  • 注: 多くの場合、パターンは区別されません。 重複している可能性があり、通常は元のすべての行をカバーしているわけではありません。 一部の行は、どのパターンにも当てはまらない場合があります。

ヒント

  • 入力パイプで whereproject を使用して、関心があるデータだけに絞り込みます。
  • 関心がある行が見つかったら、 where フィルターに特定の値を追加して、より詳しく調べることができます。

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 source 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 非常事態担当マネージャー