使用 “版本 ”下拉列表切换服务。 了解有关导航的详细信息。
适用于:✅ Azure Data Explorer ✅ Azure Monitor ✅ Microsoft Sentinel
该函数 tokenize_fl() 是 用户定义的函数(UDF), 用于将半结构化文本字符串(如日志行)标记到单独的列中。 它使用基于正则表达式的方法在非字母数字分隔符上拆分文本,同时保留句点、连字符、冒号、斜杠和等号等常见语义字符。
Syntax
T|invoketokenize_fl(text_col)
详细了解 语法约定。
参数
| Name | 类型 | 必选 | Description |
|---|---|---|---|
| text_col | string |
✔️ | 包含要标记的文本的字符串列的名称。 |
函数定义
可以通过将函数的代码嵌入为查询定义的函数,或将其创建为数据库中的存储函数来定义函数,如下所示:
使用以下 let 语句定义函数。 不需要任何权限。
let tokenize_fl=(tbl:(*), text_col:string)
{
let universal_regex = @"[^\w\.\-:/=]+"; // Universal Token Splitter
tbl
| serialize _rid=row_number()
| join (tbl
| extend _text = column_ifexists(text_col, '')
| extend norm = replace_regex(_text, universal_regex, "$$$")
| extend tokens = split(norm, "$$$")
| serialize _rid=row_number()
| mv-expand with_itemindex = i tokens
| summarize cols = make_bag(bag_pack(strcat("col", tostring(i + 1)), tokens)) by _rid
| evaluate bag_unpack(cols)
) on _rid
| project-away _rid, _rid1
};
// Write your query to use the function here.
Example
以下示例使用 invoke 运算符运行函数。
若要使用查询定义的函数,请在嵌入的函数定义后调用它。
let tokenize_fl=(tbl:(*), text_col:string)
{
let universal_regex = @"[^\w\.\-:/=]+"; // Universal Token Splitter
tbl
| serialize _rid=row_number()
| join (tbl
| extend _text = column_ifexists(text_col, '')
| extend norm = replace_regex(_text, universal_regex, "$$$")
| extend tokens = split(norm, "$$$")
| serialize _rid=row_number()
| mv-expand with_itemindex = i tokens
| summarize cols = make_bag(bag_pack(strcat("col", tostring(i + 1)), tokens)) by _rid
| evaluate bag_unpack(cols)
) on _rid
| project-away _rid, _rid1
};
let tbl = datatable(s:string)
[
"INFO 2025-12-11T11:22:33Z device=cam01 temp=32.8C ip=10.0.0.5/24",
"WARN user=adi path=/var/log/syslog error:disk-full id=aa:bb:cc:01",
];
tbl
| invoke tokenize_fl('s')
输出
| s | col1 | col2 | col3 | col4 | col5 | col6 |
|---|---|---|---|---|---|---|
| INFO 2025-12-11T11:22:33Z device=cam01 temp=32.8C ip=10.0.0.5/24 | 信息 | 2025-12-11T11:22:33Z | device=cam01 | temp=32.8C | ip=10.0.0.5/24 | |
| WARN user=adi path=/var/log/syslog error:disk-full id=aa:bb:cc:01 | WARN | user=adi | path=/var/log/syslog | error:disk-full | id=aa:bb:cc:01 |