首页 > 解决方案 > Kusto 查询,如何保存查询结果并稍后使用

问题描述

在 App Insight 中,如何编写将查询结果保存到变量中的 KQL,并稍后在第二个查询中使用该变量?

例如,查找事件发生时的时间戳:

let incidentTime = traces 
| where message = "UNIQUE IDENTIFIER"
| limit 1

稍后在第二次查询中使用此时间戳以在事件发生时查找附近的痕迹

traces
| where timestamp between (datetime_diff('minute', -1, incidentTime)..incidentTime)

第二个查询给了我一个错误,基本上说无法从事件时间中检索标量值。

如何从incidentTime 中读取值并将其放入第二个查询中?

标签: azure-application-insightsazure-data-explorerkql

解决方案


你可以使用toscalar()around()

例如:

let incidentTime = toscalar(
    traces 
    | where message = "UNIQUE IDENTIFIER"
    | project timestamp
    | limit 1
);
traces
| where around(timestamp, incidentTime, 1m)

同样,如果您想对多个列执行此操作:

let params = toscalar(
    traces 
    | where message = "UNIQUE IDENTIFIER"
    | project pack_array(timestamp, username)
    | limit 1
);
traces
| where around(timestamp, todatetime(params[0]), 1m)
| where username == tostring(params[1])

推荐阅读