Как обойти чувствительность к регистру у Кусто с помощью JOIN

Я строю динамические компьютерные группы с помощью Log Analytics (Kusto). Мне нужно объединить две таблицы, где чувствительность к регистру компьютера не совпадает. Кто-нибудь нашел обходной путь для этого сценария?

Пример (с использованием одного компьютера):

У таблицы пульса есть компьютер с именем ABCDE.domain.com В таблице Application_CL есть компьютер с именем abcde.DOMAIN.com

Если я выполню этот запрос, результирующий набор будет пустым, если полное доменное имя не является точным соответствием. Если бы это был 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 ответа

Решение

Если логика в вашем запросе позволяет использовать регистр без учета регистра 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"

Видеть:

Вместо этого вы можете использовать поиск, который по умолчанию нечувствителен к регистру

Другие вопросы по тегам