【问题标题】:Azure Kusto - how to parse a string looking for the last node?Azure Kusto - 如何解析寻找最后一个节点的字符串?
【发布时间】:2019-07-09 05:04:54
【问题描述】:

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

例如: data and type = SQL in dependencies 是一个 sql server 查询。如果它在时间戳 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 列资源。

谢谢!

【问题讨论】:

  • 澄清:这是您要解析的值:tcp:sqlserver-xxx-xxxxxx.database.windows.net | DDDDDDDDDD 是您要从中解析出来的子字符串吗?
  • 没错。代表服务器的字符串 |数据库的长度可以变化,DDDDD 也是如此。我们的服务器名称和数据库名称的长度各不相同。谢谢!

标签: azure azure-log-analytics azure-data-explorer


【解决方案1】:

正如 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

【讨论】:

    【解决方案2】:

    您可以使用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
    

    返回:

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

    【讨论】:

      猜你喜欢
      • 2016-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-21
      相关资源
      最近更新 更多