2016-10-01 72 views
1

我有两个自定义事件A和B. A将有一列有2列的C和D(具有datetime数据类型)。自定义事件B将具有2列E和F的行,其中E将具有日期时间值并且F将是整数值。事件A和B没有任何公共列Azure应用程序洞察联盟和列比较的分析查询

现在我希望结果集具有在时间C和D之间发生的那些行。

例如,我有值 列C - “2016年9月3日” 列d - “2016年9月11日”具有多行 E栏从“2016年8月1日”开始,直到“ 2016年9月30" 日。我想要的结果设置为只具有与列E和F值的行C列和d之间发生

let tab1 = customEvents | extend cws = todatetime(tostring(customDimensions.['ColumnC'])) , cwe =todatetime(tostring(customDimensions.['ColumnB'])) | where name == "A" | project cws , cwe , name | limit 1 ; 
let tab2 = customEvents | extend dt = todatetime(tostring(customDimensions.['E'])) | where name == "B" |summarize F=count(name) by E=startofday(dt) | order by E asc | project E , F ; 
union tab* |take 10 |project cws , cwe , name , E , F 
| where E > cws and E < cwe | project E , F 

由于没有共同的专栏中,我曾尝试使用联合声明和联合两个表,但无法以获得所需的结果集。对这个问题的任何输入对我来说都会很有帮助。

回答

1

当您想要连接2个没有公共列的数据集时,可以创建一个虚拟列。 试试这个问题:

customEvents 
| where name == "A" 
| extend cws = todatetime(tostring(customDimensions.['ColumnC'])) , cwe =todatetime(tostring(customDimensions.['ColumnB'])), dummy = "dummy" | project cws , cwe , name, dummy 
| join kind = leftouter (
    customEvents 
    | where name == "B" 
    | extend dt = todatetime(tostring(customDimensions.['E'])) | summarize F = count(name) by E=startofday(dt) | order by E asc | project E , F, dummy = "dummy" 
) on dummy 
| where E > cws and E < cwe | project E , F