Как обойти чувствительность к регистру у Кусто с помощью 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"
Видеть:
Вместо этого вы можете использовать поиск, который по умолчанию нечувствителен к регистру