如何用Kusto Query Language将每6行数据转为单行6列?
Kusto 查询解决方案
针对每6行重复的键值对日志格式,可通过以下Kusto查询将其转换为结构化单行数据:
// 假设原始日志表名为Logs,存储每行日志的列名为Line Logs | extend rn = row_number() | extend groupId = rn // 6 // 按每6行划分一组 | parse Line with key ": " value | extend value = replace_string(value, "'", "") // 移除值两端的单引号 | extend value = replace_string(value, ",", "") // 移除行尾多余的逗号 | summarize props = make_bag(pack(key, value)) by groupId | evaluate bag_unpack(props) | rename timestamp = '@timestamp' // 将@timestamp重命名为简洁的timestamp列 | project timestamp, msName, level, message, userId, req
步骤说明
- 分组标识:通过
row_number()生成行号,再用整数除法// 6为每6行分配同一个分组ID,确保同一条日志的6个属性归为一组。 - 解析键值:使用
parse操作符拆分每行的键(如@timestamp、msName)和对应值。 - 清理数据:用
replace_string移除值中的单引号和行尾逗号,避免格式干扰后续聚合。 - 聚合转结构:
make_bag将每组内的键值对打包为动态对象,bag_unpack把动态对象展开为结构化列。 - 列调整:重命名
@timestamp列并指定输出列顺序,匹配目标格式。
内容的提问来源于stack exchange,提问作者Dmitry Romov
相关产品推荐
相关产品推荐

