次の方法で共有


diffpatterns プラグイン

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

同じ構造の 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 指定した重みに従って入力の各行を考慮するために使用される列。 intlongrealなどの数値列の名前である必要があります。 既定では、各行の重みは "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 になります。 ワイルドカードを手動で変更する方法については、下記の「引数」セクションを参照してください。

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

ヒント

  • 入力*パイプ*で 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 ソース 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 非常事態担当マネージャー