加入时的 Azure Application Insights 分析查询

Azure Application Insights Analytics Query on Joining

我有 2 个自定义事件 A 和 B。 A 可以有值 "X" 或 "Y" 。 B 将具有唯一值 Z 。事件 A 的某些行同时具有值​​ "X" 和 "Y",但具有唯一的事件 B 值 "Z",我想过滤具有值 "X" 和 [=22 的事件 A =].

我希望结果集包含只有值 X 的事件 A 和具有值 Z 的事件 B。基本上我不想显示具有 Y 值的事件 A 的条目,因为它已经有一个具有 "X" 且具有与 Y 相同的唯一值 Z 的条目。

我基本上是根据唯一值 Z 在 X 和 Y 的值之间进行内部连接 ​​

    customEvents 
    | extend Column1 = tostring(customDimensions.['A'])  , column2 = tostring(customDimensions.['B'])
    | where (Column1  == "X" )
    | project Column1 ,column2 
    | join kind= inner (        
      customEvents | extend Column1 = tostring(customDimensions.['A']) , column2 = tostring(customDimensions.['B']) | where (Column1 == "Y"  
    )| project Column1 , column2  
    ) on  column2  | project Column1 , column2

通过这种方式,我能够在 column2 中的唯一值 Z 和 column1 中的 X 上获取公共行。

现在如何在事件 A 中显示仅具有 Y 值的 column1 的剩余行,并将它们添加到我从上述内连接查询获得的结果集中?我尝试使用具有 Y 值的事件 A 的完整外部以及我得到的上述结果。但它并没有给我想要的结果。在这方面需要一些帮助。

我认为有几种方法可以达到预期的效果:

  • 使用 Union 运算符仅 "glues" 两个数据集在一起而不连接任何字段 - (Query1) | union (Query2)。如果您可以将两个查询中的两个数据集作为输入来生成并集,那么这是合适的。

  • 使用(Query1) | join kind=anti (Query2) on Field从左侧获取Field中右侧未表示的所有内容。如果您有一个数据集,您希望从其他更丰富的数据集中 "subtract" 以获得所需的结果,这很适合。

你能不能在没有任何 joins/unions 的情况下更简单地做到这一点,比如

customEvents | 
extend columnA = tostring(customDimensions.['A'])
extend columnB = tostring(customDimensions.['B'])
extend columnMerged = iff( columnA == 'X', ColumnA, ColumnB )
project columnMerged