Итак, у меня есть такой запрос Kusto
exceptions
| extend A_= tostring(customDimensions.A)
| where A_ in~ ("Could not get notes: From:", "failed to call", "Custom conference list" )
// | where A_ contains 'Could not get notes: From:' //This is working when I use "contains" operator but fails to check below 2 items when the first item doesn't exist
// | where A_ contains 'Custom conference list'
// | where A_ contains 'failed to call'
Первый элемент в списке — «Не удалось получить заметки: от:», где в конце строки есть несколько идентификаторов.
Например;
Не удалось получить заметки: От кого: abcd
Не удалось получить заметки: От: abcdef
То, что я пытаюсь сделать, это взять все элементы, начинающиеся с «Не удалось получить заметки: от:», и использовать их в операторе «in~».
До сих пор я пытался использовать оператор содержит, как показано ниже
|where A_ contains 'Could not get notes: From:' // This seems to be working as it will outputting every item that starts with "Could not get notes: From:" but when I am trying to use it in the "in~" it is failing.
Проблема с использованием оператора «содержит» для каждого уникального элемента заключается в том, что если какой-либо из элементов (скажем, для 3 элементов) не будет найден, запрос не возвращает результатов, даже если 2 элемента все еще существуют.
Не уверен, что у этого есть лучшее решение.
Вместо этого вы должны использовать has_any
:
exceptions
| extend A_= tostring(customDimensions.A)
| where A_ has_any ("Could not get notes: From:", "failed to call", "Custom conference list")
Также обратите внимание, что contains
значительно медленнее, чем has
/has_any
, потому что последний использует индекс для выборки только релевантных записей, а contains
сканирует все записи. Однако обратите внимание, что между ними есть семантическая разница: contains
ищет подстроки, а has
ищет только полные токены. Например, "hello world" contains "hell"
вернет true
, а "hello world" has "hell"
вернет false
. Дополнительную информацию см. в документе Строковые операторы.
Просто нашел решение. Но я не знал, какой из них лучше, когда дело доходит до скорости. Большое спасибо за дальнейшее объяснение @Slavik N