如何使用JOIN解决Kusto区分大小写的问题

时间:2019-01-06 16:30:20

标签: logging analytics kusto

我正在使用Log Analytics(Kusto)建立动态计算机组。我需要加入两个表,其中区分大小写的计算机不匹配。有没有人想出这种情况的解决方法?

示例(使用一台计算机):

心跳表的计算机名称为ABCDE.domain.com Application_CL表的计算机名称为abcde.DOMAIN.com

如果我运行此查询,则结果集为空,除非FQDN完全匹配。如果这是SQL,它将返回ABCDE.domain.com,这就是我们所需要的。

let H = Heartbeat | summarize by Computer; let A = Application_CL | where Name_s == "AppName" | summarize by Computer; H | join A on $left.Computer == $right.Computer | distinct Computer

我尝试使用=〜作为联接运算符,但它必须为==。在这种情况下,toupper()和tolower()对我不利。

预先感谢

3 个答案:

答案 0 :(得分:1)

如果查询中的逻辑允许您使用不区分大小写的in~()!in~()运算符,则应选择该选项。

否则,您可以在两个连接分支上扩展计算列,然后再在该列上应用连接(尽管与不必这样做相比,效率较低)。

类似:

T1 
| extend lowercase_computer_name = tolower(ComputerName)
| join (T2 | extend lowercase_computer_name = tolower(ComputerName))
  on lowercase_computer_name

答案 1 :(得分:0)

您可以改为使用搜索,默认情况下,搜索不区分大小写

答案 2 :(得分:0)

如果您想要进行不区分大小写的正则表达式评估,您可以在正则表达式模式的开头包含不区分大小写标志。

就像下面的例子:

ServiceName matches regex "(?i)super duper express"

见: