如何在Kusto中从字符串列记录中提取整数值并生成新列?
Kusto提取产品名中整数重量实现方案
在Kusto中完全可以实现该需求,无需硬编码固定数值,使用内置正则提取函数即可自动识别字符串中的整数,生成独立的Value列。
实现逻辑
利用extract()函数通过正则规则匹配字符串中连续的数字片段,再通过toint()将提取到的数字内容转为整数类型即可,该方案兼容重量单位大小写差异、数字与单位间的空格差异,不需要针对单个产品线写单独匹配规则。
可直接运行的示例代码
let data = datatable(ProducutName:string) [ "Amigo Patchi 50 KG", "Amigo Patchi 50 KG", "Amigo Patchi 50 KG", "Chocolate Bar 25Kg", "Chocolate Bar 25Kg", "Chocolate Bar 25Kg", "Brownies CupCakes 100Kg", "Brownies CupCakes 100Kg", "Brownies CupCakes 100Kg" ]; data // 正则提取连续数字,转为整数类型生成Value列 | extend Value = toint(extract(@"(\d+)", 1, ProducutName)) // 修正原表列名笔误,输出要求的两列结果 | project ProductName = ProducutName, Value
规则说明
- 正则表达式
(\d+)用于匹配字符串中出现的1个及以上连续数字字符,自动捕获第一组匹配到的数字内容,适配任意整数值场景 - 若后续遇到带小数的重量值,只需要把正则替换为
(\d+\.?\d*),再用toreal()替换toint()即可提取浮点型重量 - 该写法不会受单位书写格式影响,不管单位是
KG/kg/Kg、和数字之间是否存在空格,都能正常提取数字值
内容的提问来源于stack exchange,提问作者Noobie2021
相关产品推荐
相关产品推荐

