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

How to work around Kusto's case sensitivity with JOIN

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

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

Heartbeat table 有名称为 ABCDE.domain.com 的计算机 Application_CL table 有名称为 abcde.DOMAIN.com

的计算机

如果我 运行 此查询,结果集为空,除非 FQDN 完全匹配。如果这是 SQL,它将 return 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() 在这种情况下对我没有好处。

提前致谢

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

否则,您可以在两个连接分支中扩展计算列,然后再对该列应用连接(但与不必执行此操作相比,效率较低)。

类似于:

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

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

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

如以下示例所示:

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

参见: