diffpatterns 插件

适用于:✅Azure 数据资源管理器

比较结构相同的两个数据集,找出描述这两个数据集之间差异的离散属性(维度)的模式。 该插件通过 evaluate 运算符调用。

开发 diffpatterns 的目的是帮助分析故障(例如,通过比较给定时间范围内的故障和非故障进行分析),但也可找出相同结构的任何两个数据集之间的差异。

注意

diffpatterns 的目的是查找显著的模式(这将捕获集之间的数据差异部分),而不是查找逐行差异。

语法

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

详细了解语法约定

参数

客户 类型​​ 必需 说明
SplitColumn string ✔️ 列名,指示算法如何将查询拆分成数据集。 算法根据指定的 SplitValueASplitValueB 参数值,将查询分为“A”和“B”两个数据集,并分析二者间的差异。 因此,拆分列必须至少有两个不同的值。
SplitValueA string ✔️ 指定的 SplitColumn 中的值之一的字符串表示形式。 SplitColumn 中具有此值的所有行都会被视为数据集“A”。
SplitValueB string ✔️ 指定的 SplitColumn 中的值之一的字符串表示形式。 SplitColumn 中具有此值的所有行都会被视为数据集“B”。
WeightColumn string 列,用于根据指定的权重考虑输入中的每一行。 必须是数字列的名称,例如 intlongreal。 默认情况下,每一行的权重都是“1”。 若要使用默认值,请输入波形符:~。 权重列的常见用法是对已嵌入每一行的数据进行采样或存储/聚合。

示例: T | extend splitColumn= iff(request_responseCode == 200, "Success" , "Failure") | evaluate diffpatterns(splitColumn, "Success","Failure", sample_Count)
阈值 real 0.015 到 1 范围内的 real。 此值设置两个集之间的最小模式比例差异。 默认值为 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 返回一小组模式,可捕获两个数据集中数据的不同部分(即,某一模式可捕获第一个数据集中占较大百分比的行和第二个数据集中占较小百分比的行)。 每种模式均由结果中的一行表示。

diffpatterns 的结果返回以下列:

  • SegmentId:为当前查询中的模式分配的标识(注意:不保证 ID 在重复查询中是相同的)。

  • CountA:集 A 中的模式捕获的行数(集 A 是 where tostring(splitColumn) == SplitValueA 的等效项)。

  • CountB:集 B 中的模式捕获的行数(集 B 是 where tostring(splitColumn) == SplitValueB 的等效项)。

  • PercentA:集 A 中由模式捕获的行所占百分比 (100.0 * CountA / count(SetA))。

  • PercentB:集 B 中由模式捕获的行所占百分比 (100.0 * CountB / count(SetB))。

  • PercentDiffAB:A 和 B 之间的百分比差绝对值 (|PercentA - PercentB|) 是描述两个集之间模式显著性差异的主要度量值。

  • 其余列:是输入的原始架构,用于描述模式,每行(模式)表示列的非通配符值(等效于行中的每个非通配符值的 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 计数 A 计数 B 百分比 A 百分比 B PercentDiffAB 状态 EventType Source 损害农作物
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 灾害管理