无法解析Kusto查询

时间:2019-04-11 14:34:09

标签: kusto azure-data-explorer kql

我的SecurityLog带有DstIP_s之类的字段,并且想要显示与我的trojanDst表匹配的记录

i

我收到无法解析查询错误?

3 个答案:

答案 0 :(得分:2)

您发布的查询在|之前有一个冗余管道(join)。

从效率的角度来看,请确保join的左侧较小,如此处建议的那样:https://docs.microsoft.com/en-us/azure/kusto/query/best-practices#join-operator

答案 1 :(得分:1)

这个评论太长了。正如@Yoni L指出的那样,问题是管道运算符加倍。


对于具有SQL背景join的任何人可能有点违反直觉(实际上是kind=innerunique):

JOIN operator

  

种类未指定,kind = innerunique

     

on的每个值仅匹配左侧的一行   键。输出包含该行与行的每个匹配项的一行   从右边。

     

种类=内部

     

对于匹配行的每种组合,输出中都有一行   从左和右。

let t1 = datatable(key:long, value:string)  
[
1, "a",  
1, "b"  
];
let t2 = datatable(key:long, value:string)  
[  
1, "c", 
1, "d"  
];
t1| join t2 on key;

输出:

┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│   1 │ a     │    1 │ c      │
│   1 │ a     │    1 │ d      │
└─────┴───────┴──────┴────────┘

Demo


SQL样式JOIN版本:

let t1 = datatable(key:long, value:string)  
[
1, "a",  
1, "b"  
];
let t2 = datatable(key:long, value:string)  
[  
1, "c", 
1, "d"  
];
t1| join kind=inner t2 on key;

输出:

┌─────┬───────┬──────┬────────┐
│ key │ value │ key1 │ value1 │
├─────┼───────┼──────┼────────┤
│   1 │ b     │    1 │ c      │
│   1 │ a     │    1 │ c      │
│   1 │ b     │    1 │ d      │
│   1 │ a     │    1 │ d      │
└─────┴───────┴──────┴────────┘

Demo

答案 2 :(得分:1)

KQL中有很多联接类型,例如innerunique,inner,leftouter,rightouter,fullouter,anti等。在这里您可以找到full list