【问题标题】:How to find last occurrence of a substring using Kusto Query Language?如何使用 Kusto 查询语言查找子字符串的最后一次出现?
【发布时间】:2020-02-14 02:14:22
【问题描述】:

Kusto 查询语言提供IndexOf 函数(搜索第一次出现)。问题是如何找到某个子字符串的最后一次出现。

【问题讨论】:

    标签: azure-application-insights kql


    【解决方案1】:

    我想,你能做的最好的就是(例如如何在“abcdefabcdef”中搜索最后一个“cde”):

    datatable (name:string, lookup:string)["abcdefabcdef", "cde"]
    | project value = strlen(name) - indexof(reverse(name), reverse(lookup)) - strlen(lookup)
    

    【讨论】:

    • 我能够使用 reverse() 逻辑,它适用于我的情况。在日志分析中,我必须找到用“/”分割的最后一组字符串。我使用了反向(子字符串(反向(输入字符串),0,索引(反向(输入字符串),“/”)));
    【解决方案2】:

    您可以将countof的结果传递给indexof的出现参数:

    let lastIndexof = (input:string, lookup: string) {
        indexof(input, lookup, 0, -1, countof(input,lookup))
    };
    print lastIndexof("abcdefabcdef", "cde")
    

    【讨论】:

    • 不错的解决方法 =) 我认为 start_index 是从零开始的。它没有在文档中指定,但由于这个函数返回从零开始的索引,所以我的期望是它也是从零开始的。
    • 当我在天蓝色的日志分析中使用它时,当我在子字符串中使用它时,我收到一个错误说明,countof() 值应该是一个标量。我尝试使用 toscalar() 但在我的情况下它仍然没有解决。但@Dmitry Matveev 逻辑在这种情况下有效。
    猜你喜欢
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2010-11-04
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    相关资源
    最近更新 更多