【问题标题】:Kusto query could not be parsed无法解析 Kusto 查询
【发布时间】:2019-04-11 14:34:09
【问题描述】:

我有带有 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

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

【问题讨论】:

    标签: azure-data-explorer kql


    【解决方案1】:

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

    从效率的角度来看,确保join 的左侧较小,如下所示:https://docs.microsoft.com/en-us/azure/kusto/query/best-practices#join-operator

    【讨论】:

      【解决方案2】:

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


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

      JOIN operator:

      种类未指定,种类=innerunique

      只有左侧的一行与 on 的每个值匹配 钥匙。输出包含该行与行的每个匹配的行 从右边。

      Kind=inner

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

      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

      【讨论】:

        【解决方案3】:

        KQL 中有许多连接类型,例如innerunique、inner、leftouter、rightouter、fullouter、anti 等等。在这里你可以找到full list

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-11-28
          • 1970-01-01
          • 2021-04-06
          • 1970-01-01
          • 1970-01-01
          • 2015-10-10
          • 1970-01-01
          相关资源
          最近更新 更多