我有带有 DstIP_s 等字段的 SecurityLog 并希望显示与我的 trojanDst 表匹配的记录
let trojanDst = datatable (DstIP_s:string)
[ "1.1.1.1","2.2.2.2","3.3.3.3"
];
SecurityLog |
| join trojanDst on DstIP_s
我收到查询无法解析 错误?
我有带有 DstIP_s 等字段的 SecurityLog 并希望显示与我的 trojanDst 表匹配的记录
let trojanDst = datatable (DstIP_s:string)
[ "1.1.1.1","2.2.2.2","3.3.3.3"
];
SecurityLog |
| join trojanDst on DstIP_s
我收到查询无法解析 错误?
您发布的查询|
在join
.
从效率的角度来看,确保左侧join
是较小的,如下所示:https ://docs.microsoft.com/en-us/azure/kusto/query/best-practices#join-operator
评论太长了。正如@Yoni L指出的那样,问题是双重管道运算符。
对于任何有 SQL 背景的人来说join
可能有点违反直觉(实际上是这样kind=innerunique
):
kind 未指定,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 │
└─────┴───────┴──────┴────────┘
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 │
└─────┴───────┴──────┴────────┘
KQL 中有许多连接类型,例如innerunique、inner、leftouter、rightouter、fullouter、anti 等。在这里您可以找到完整列表