7

我有 2 个 KQL 查询,我想将它们组合起来,以便将两行显示为一个结果。不仅是第一个查询的结果,还有第二个查询的结果:

R_CL
| where isnotempty(SrcIP_s) 
| project Message 
| take 1;

R_CL
| where isempty(SrcIP_s) 
| project Message 
| take 1

请参阅下面的示例R_L。我希望看到 2 行结果,其中一个 SrcIP_s 不为空,第二个 SrcIP_s 为空(在这种情况下,它总是相同的)

let R_CL = datatable ( SrcIP_s:string, Message:string)
["1.1.1.1" ,"one",
"" ,"two",
"2.2.2.2","three",
"3.3.3.3","four"];
R_CL
| project SrcIP_s, Message
4

2 回答 2

7

我知道这是一个旧请求 - 但这是一个使用视图和联合的示例查询,用于您的单个查询:

您的两个单独的查询...

R_CL
| where isnotempty(SrcIP_s) 
| project Message 
| take 1;

R_CL
| where isempty(SrcIP_s) 
| project Message 
| take 1

会成为:

let Query1 = view () {
R_CL
| where isnotempty(SrcIP_s) 
| project Message 
| take 1;
};
let Query2 = view () {
R_CL
| where isempty(SrcIP_s) 
| project Message 
| take 1
};    
union withsource="TempTableName" Query1, Query2
于 2020-01-20T17:17:56.123 回答
5

一个简单的解决方案是像这样使用联合运算符:

let query1 = R_CL
    | where isnotempty(SrcIP_s) 
    | project Message 
    | take 1;

let query2 = R_CL
    | where isempty(SrcIP_s) 
    | project Message 
    | take 1;

query1
| union query2;
于 2021-02-22T12:38:38.007 回答