Есть ли способ проверить, есть ли подстрока в поле для Log Analytics?

У меня есть столбец, полный компьютеров в Log Analytics. Например, window432, linus909, windows322, linux432. Я фильтрую использование своего диска, но я также хочу фильтровать по конкретному окну слова или лин. Это возможно? Я использую Kusto для запроса, поэтому вот пример моего мыслительного процесса:

Perf
| where Name == "Utilization Percentage"
and "win" in Computer

Что-то вроде этого. Это возможно? Спасибо.


comment
было бы полезно, если бы вы могли предоставить образец ввода (с использованием оператора datatable) и соответствующий ожидаемый результат. в частности - хотите ли вы, чтобы вывод включал все значение Computer или только те записи в нем, которые имеют подстроку win - как одну запись? как несколько записей?   -  person Yoni    schedule 29.07.2020
comment
@Yoni только те записи, которые выиграли. Например, когда я это делаю, Computer == window432, он показывает мне все для этого компьютера. Я не знаком с datatable, но сейчас посмотрю.   -  person Colorful Codes    schedule 29.07.2020


Ответы (2)


На основании информации в вопросе и того, что я понимаю, требуется фильтровать на основе имен компьютеров, начинающихся с window или lin.

В этом случае вы можете выполнить требование с помощью начинается со строкового оператора.

Запрос будет выглядеть примерно так:

Perf
| where CounterName == @"% Processor Time" and InstanceName == "_Total"
| where Computer startswith "window" or Computer startswith "lin"

or

InsightsMetrics
| where Name == "UtilizationPercentage"
| where Computer startswith "window" or Computer startswith "lin"

Точно так же, в зависимости от требования, вы можете использовать другие строковые операторы, такие как in, has, endwith и т. Д., Строковые операторы или любые другие операторы или функции, если это необходимо. Для получения дополнительной информации см. Язык запросов Kusto (KQL ) документы.

person KrishnaG-MSFT    schedule 30.07.2020

Если я правильно понимаю описание, это может сработать.

It:

  1. разделяет исходную строку, разделенную запятыми, используя split()
  2. расширяет те, которые используют mv-apply
  3. отфильтровывает значения, не содержащие win
  4. объединяет оставшиеся значения в новую (отфильтрованную) строку, разделенную запятыми
datatable(Computers:string, id:int)
[
    "window432, linus909, windows322, linux432", 1,
    "window451, linux459, windows444, linux234", 2,
    "android222, ios222, linux333"             , 3
]
| mv-apply Computer = split(Computers, ", ") on (
    where Computer contains "win"
    | summarize Computers = strcat_array(make_list(Computer), ", ")
)
| where isnotempty(Computers)

Вход:

| Computers                                 | id |
|-------------------------------------------|----|
| window432, linus909, windows322, linux432 | 1  |
| window451, linux459, windows444, linux234 | 2  |
| android222, ios222, linux333              | 3  |

выход:

| id | Computers             |
|----|-----------------------|
| 1  | window432, windows322 |
| 2  | window451, windows444 |
person Yoni    schedule 29.07.2020