我的表的动态数据类型列有时有json以外的值,但是'evaluate bag_unpack'命令由于这些原因无法运行。
是否有一种方法,我只能从col中选择正确格式的json字符串,并将其发送到'评估bag_unpack',同时忽略其余的垃圾值。
样本数据:
{"message":"msg1","code":"1"}
<html><body>Server Down</body></html>
{"message":"msg2","code":2"}
{"message":"msg3","code":"3"}
bag_keys()在本例中用于确定已解析的日志是否为有效的JSON
datatable(log_id:int, log:dynamic)
[
1 ,'{"message":"msg1","code":"1"}'
,2 ,'<html><body>Server Down</body></html>'
,3 ,'{"message":"msg2","code":2"}'
,4 ,'{"message":"msg3","code":"3"}'
]
| extend parsed_log = todynamic(tostring(log))
| extend valid_json = iff(isnotempty(bag_keys(parsed_log)), parsed_log, dynamic(null))
| evaluate bag_unpack(valid_json)
<表类>log_id 日志 parsed_log 代码 消息 tbody><<tr>1 {"message"msg1","code":"1"} {"message"msg1","code":"1"} 1 msg1 2服务器下 服务器下 3 {"message"msg2","code": 2"} {"message"msg2","code": 2"} 4{"message"msg3","code":"3"} {"message"msg3","code":"3"} 3 msg3 表类>