Azure Kusto - 如何解析查找最后一个节点的字符串?

Azure Kusto - how to parse a string looking for the last node?

我正在编写 kusto 查询来分析长时间简单查询时的数据库状态 运行。

例如: 数据和依赖项中的类型 = SQL 是 sql 服务器查询。如果其在时间戳 2019-06-24T16:41:24.856 的持续时间 >= 15000(>= 15 秒) 我想查询和分析从 2019-06-24T16:40:24.856 到 2019-06-24T16:42:24.856 的 AzureMetrics 中的 dtu_consumption_percent。 (查询完成时间前1分钟和查询完成时间后1分钟)判断数据库在那个时间点的状态。

问题:我想知道是否有人可以指导我从依赖项中获取目标列中的数据库名称?

目标如下所示:

tcp:sqlserver-xxx-xxxxxx.database.windows.net | DDDDD

我需要提取 DDDDD 以加入 AzureMetrics 列资源。

谢谢!

您可以使用 parse 运算符:

https://docs.microsoft.com/en-us/azure/kusto/query/parseoperator

print value = 'tcp:sqlserver-xxx-xxxxxx.database.windows.net | DDDDD'
| parse value with * "| " database

这个returns:

| value                                                 | database |
|-------------------------------------------------------|----------|
| tcp:sqlserver-xxx-xxxxxx.database.windows.net | DDDDD | DDDDD    |

正如 Yoni 所说,您可以使用解析,或者您可以使用子字符串:

let T = datatable(Value:string) [
'tcp:sqlserver-xxx-xxxxxx.database.windows.net | DDDDD',
'udp:appserver-yyy-yyyyyy.database.contoso.com | EEEEE'
];
T
// Look for the pipe and take everything after it as the value
| extend ToSubstring = substring(Value, indexof(Value, "|")+1)

https://docs.microsoft.com/en-us/azure/kusto/query/substringfunction

但是,如果您发现自己经常这样做,您可能想看看自定义字段:

https://docs.microsoft.com/en-us/azure/azure-monitor/platform/custom-fields