有没有办法检查 Log Analytics 字段中的子字符串是否存在?
Is there a way to check if substring in field for Log Analytics?
我在 Log Analytics 中有一列计算机。例如,“window432,linus909,windows322,linux432”。我正在过滤我的磁盘利用率,但我还想按特定单词“window”或“lin”进行过滤。那可能吗?我正在使用 Kusto 进行查询,下面是我的思考过程的示例:
Perf
| where Name == "Utilization Percentage"
and "win" in Computer
像这样。那可能吗?
谢谢。
如果我对描述的理解正确,这可能有效。
它:
- 使用
split()
拆分原始逗号分隔字符串
- 扩展那些使用
mv-apply
- 过滤掉不包含
win
的值
- 将剩余的值聚合成一个新的(过滤后的)逗号分隔字符串
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 |
根据问题中的给定信息和我的理解,要求是根据以“window”或“lin”开头的计算机名称进行过滤。
如果是这种情况,那么您可以使用 startswith string operator 来完成要求。
查询类似于:
Perf
| where CounterName == @"% Processor Time" and InstanceName == "_Total"
| where Computer startswith "window" or Computer startswith "lin"
或
InsightsMetrics
| where Name == "UtilizationPercentage"
| where Computer startswith "window" or Computer startswith "lin"
同样,根据需要,您可以根据需要利用其他字符串运算符,如“in”、“has”、“endswith”等字符串运算符或任何其他运算符或函数。关于w.r.t的更多信息,请参考Kusto Query Language (KQL)文档。
我在 Log Analytics 中有一列计算机。例如,“window432,linus909,windows322,linux432”。我正在过滤我的磁盘利用率,但我还想按特定单词“window”或“lin”进行过滤。那可能吗?我正在使用 Kusto 进行查询,下面是我的思考过程的示例:
Perf
| where Name == "Utilization Percentage"
and "win" in Computer
像这样。那可能吗? 谢谢。
如果我对描述的理解正确,这可能有效。
它:
- 使用
split()
拆分原始逗号分隔字符串
- 扩展那些使用
mv-apply
- 过滤掉不包含
win
的值
- 将剩余的值聚合成一个新的(过滤后的)逗号分隔字符串
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 |
根据问题中的给定信息和我的理解,要求是根据以“window”或“lin”开头的计算机名称进行过滤。
如果是这种情况,那么您可以使用 startswith string operator 来完成要求。
查询类似于:
Perf
| where CounterName == @"% Processor Time" and InstanceName == "_Total"
| where Computer startswith "window" or Computer startswith "lin"
或
InsightsMetrics
| where Name == "UtilizationPercentage"
| where Computer startswith "window" or Computer startswith "lin"
同样,根据需要,您可以根据需要利用其他字符串运算符,如“in”、“has”、“endswith”等字符串运算符或任何其他运算符或函数。关于w.r.t的更多信息,请参考Kusto Query Language (KQL)文档。