2016-07-06 90 views
1

我有2个自定义事件A和B. A可以具有“X”或“Y”的值。 B将具有唯一值Z.事件A的某些行同时具有“X”和“Y”值,但具有唯一的事件B值“Z”,并且我想过滤具有值“X”和“Y”的事件A.Azure应用程序洞察关于加入的分析查询

我希望结果集的事件A只有值X,事件B的值是Z.基本上我不想显示事件A有Y值的条目,当它已经有一个具有与Y具有相同唯一值Z的“X”的条目时。我基本上做了一个值间的内连接X和Y基于唯一值Z

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 

通过这个,我能够获得在列2中的唯一值Z和列1中的X上的公共行。

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

+0

这将是有帮助的是你的意思到底是什么一个样本输出。 “例如,我想要一个看起来像这样的网格......”和你想要的表格,然后“但是我得到这个......”与你实际得到的是什么? –

回答

1

我觉得有几个方式来实现所期望的结果:

  • 使用Union操作,只是“胶水”两个数据集在一起,不加入任何领域 - (Query1) | union (Query2)。如果您可以将两个查询中的两个数据集作为生成联合的输入,则这很适合。

  • 使用(Query1) | join kind=anti (Query2) on FieldField的右侧未显示的左侧获取所有内容。如果您想要从其他更丰富的数据集中“减去”数据集以获得所需结果,那么这很适合。

+0

感谢您的建议。使用工会解决了我的问题。我只是在研究各种加入组合并完全忘记了工会声明。 – johnwrite

0

你不能做到这一点就更简单了,没有任何连接/工会可言,像

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