【问题标题】:Regex Match Kusto正则表达式匹配 Kusto
【发布时间】:2021-04-19 18:56:35
【问题描述】:

我有以下 2 个表格,一个包含完整的 URL 列表,另一个表格包含所有 URL 的正则表达式(近 100 个值)以及相应的主题。我现在想创建第三个表,它根据正则表达式模式将每个 url 映射到主题。

我认为 kusto 提供了“匹配正则表达式”,但它不能在行级别使用。理想情况下,我想创建一个函数并传递输出相应主题的 URL

表1:

| URL | 

表2:

|URL Regex| Topic| 

输出:

|URL | Topic|

如果以下逻辑需要任何调整才能正常工作,请告诉我,

查询:

.create-or-alter function with findTopic(Path:string) {
toscalar(Table2
| extend TopicName=case (Path matches regex URLRegex, Topic,"Not Found")
| project Topic)
}

Table1
| extend Topic=findTopic(Path)

【问题讨论】:

    标签: regex azure-data-explorer kql


    【解决方案1】:

    正则表达式不能源自动态源,例如另一个表。在 Kusto 中,正则表达式必须是字符串标量。

    在您的情况下,这不是问题,因为大约有 100 个不同的主题。您可以维护一个执行 URI 分类的存储函数:

    .create-or-alter function GetUrlTopic(Url:string)
    {
        case(
            Url matches regex @"https://bing.com.*", "Search",
            Url matches regex @"https://stackoverflow.com.*", "Q&A",
            "N/A")
    }
    

    例子:

    let Uris=datatable(Url:string)
    [
     "https://bing.com/foo/bar",
     "https://bing.com/1/2",
     "https://microsoft.com",
     "https://stackoverflow.com/q/1",
     "https://stackoverflow.com/q/2"
    ];
    Uris
    | extend Topic=GetUrlTopic(Url)
    

    结果:

    Url Topic
    https://bing.com/foo/bar Search
    https://bing.com/1/2 Search
    https://microsoft.com N/A
    https://stackoverflow.com/q/1 Q&A
    https://stackoverflow.com/q/2 Q&A

    【讨论】:

    • 谢谢,但是包含 URL regex 和 Topic 的表格会发生变化,我无法使用静态列表创建函数
    • 创建这样的东西有助于克服正则表达式模式和主题名称的静态限制.create-or-alter function GetUrlTopic(Url:string,UrlRegex:string, Topic:string) { case( Url matches regex UrlRegex, Topic, "N/A") }
    • 是的,当然。一旦需要更新模式列表,就可以更新函数。
    • 该函数也不会将表格列作为输入参数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-30
    • 2011-05-01
    • 1970-01-01
    相关资源
    最近更新 更多